mirror of https://github.com/red-prig/fpPS4.git
51 lines
1.0 KiB
Plaintext
51 lines
1.0 KiB
Plaintext
unit kern_callout;
|
|
|
|
{$mode ObjFPC}{$H+}
|
|
{$CALLING SysV_ABI_CDecl}
|
|
|
|
interface
|
|
|
|
uses
|
|
mqueue,
|
|
kern_mtx;
|
|
|
|
type
|
|
t_callout_func=procedure(arg:Pointer);
|
|
|
|
p_callout=^t_callout;
|
|
t_callout=record
|
|
c_queue:Pointer;
|
|
c_links:TAILQ_ENTRY;
|
|
c_time :Int64;
|
|
c_arg :Pointer;
|
|
c_func :t_callout_func;
|
|
c_lock :Pointer; //mtx/rwlock
|
|
c_flags:QWORD;
|
|
c_timer:THandle;
|
|
end;
|
|
|
|
const
|
|
CALLOUT_LOCAL_ALLOC =$0001; // was allocated from callfree
|
|
CALLOUT_ACTIVE =$0002; // callout is currently active
|
|
CALLOUT_PENDING =$0004; // callout is waiting for timeout
|
|
CALLOUT_MPSAFE =$0008; // callout handler is mp safe
|
|
CALLOUT_RETURNUNLOCKED=$0010; // handler returns with mtx unlocked
|
|
CALLOUT_SHAREDLOCK =$0020; // callout lock held in shared mode
|
|
CALLOUT_RWLOCK =$0040; // callout used rw lock
|
|
|
|
type
|
|
p_callout_cpu=^t_callout_cpu;
|
|
t_callout_cpu=record
|
|
cc_lock :mtx;
|
|
cc_curr :p_callout;
|
|
cc_calllist:TAILQ_HEAD;
|
|
cc_callfree:TAILQ_HEAD;
|
|
cc_cancel :Integer;
|
|
cc_waiting :Integer;
|
|
end;
|
|
|
|
implementation
|
|
|
|
end.
|
|
|