mirror of https://github.com/red-prig/fpPS4.git
57 lines
1.2 KiB
Plaintext
57 lines
1.2 KiB
Plaintext
unit sys_eventvar;
|
|
|
|
{$mode ObjFPC}{$H+}
|
|
{$CALLING SysV_ABI_CDecl}
|
|
|
|
interface
|
|
|
|
uses
|
|
mqueue,
|
|
sys_event,
|
|
kern_mtx,
|
|
vselinfo,
|
|
vfiledesc;
|
|
|
|
const
|
|
KQ_NEVENTS = 8; // minimize copy{in,out} calls
|
|
KQEXTENT =256; // linear growth by this amount
|
|
|
|
KQ_SEL =$01;
|
|
KQ_SLEEP =$02;
|
|
KQ_FLUXWAIT =$04; // waiting for a in flux kn
|
|
KQ_ASYNC =$08;
|
|
KQ_CLOSING =$10;
|
|
KQ_TASKSCHED=$20; // task scheduled
|
|
KQ_TASKDRAIN=$40; // waiting for task to drain
|
|
|
|
type
|
|
t_kq_name=array[0..31] of AnsiChar;
|
|
|
|
pp_kqueue=^p_kqueue;
|
|
p_kqueue=^t_kqueue;
|
|
t_kqueue=record
|
|
kq_lock :mtx;
|
|
kq_refcnt :Integer;
|
|
kq_list :TAILQ_ENTRY; // (kqueue)
|
|
kq_head :TAILQ_HEAD; // (knote) list of pending event
|
|
kq_count :Integer; // number of pending events
|
|
kq_sel :t_selinfo;
|
|
//kq_sigio :p_sigio; (sigio)
|
|
//kq_fdp :p_filedesc;
|
|
kq_state :Integer;
|
|
kq_knlistsize:Integer; // size of knlist
|
|
kq_knlist :p_klist; // list of knotes
|
|
kq_knhashmask:QWORD; // size of knhash
|
|
kq_knhash :p_klist; // hash table for knotes
|
|
//kq_task:task;
|
|
kq_wakeup :t_kqueue_wakeup_cb;
|
|
kq_data :Pointer;
|
|
kq_name :t_kq_name;
|
|
end;
|
|
|
|
|
|
implementation
|
|
|
|
end.
|
|
|