std/kqueue

Source   Edit  

Types

KEvent {.importc: "struct kevent", header: """#include <sys/types.h>
                       #include <sys/event.h>
                       #include <sys/time.h>""",
         pure, final.} = object
  ident*: uint               ## identifier for this event  (uintptr_t)
  filter*: cshort            ## filter for event
  flags*: cushort            ## general flags
  fflags*: cuint             ## filter-specific flags
  data*: int                 ## filter-specific data  (intptr_t)
  udata*: pointer            ## opaque user data identifier
  
Source   Edit  

Consts

EV_ADD = 0x00000001
Add event to queue (implies enable). Re-adding an existing element modifies it. Source   Edit  
EV_CLEAR = 0x00000020
Clear event state after reporting. Source   Edit  
EV_DELETE = 0x00000002
Delete event from queue. Source   Edit  
EV_DISABLE = 0x00000008
Disable event (not reported). Source   Edit  
EV_DISPATCH = 0x00000080
Disable event after reporting. Source   Edit  
EV_DROP = 0x00001000
Not should be dropped Source   Edit  
EV_ENABLE = 0x00000004
Enable event. Source   Edit  
EV_EOF = 0x00008000
EOF detected Source   Edit  
EV_ERROR = 0x00004000
Error, data contains errno Source   Edit  
EV_FLAG1 = 0x00002000
Filter-specific flag Source   Edit  
EV_NODATA = 0x00001000
EOF and no more data Source   Edit  
EV_ONESHOT = 0x00000010
Only report one occurrence. Source   Edit  
EV_RECEIPT = 0x00000040
Force EV_ERROR on success, data == 0 Source   Edit  
EV_SYSFLAGS = 0x0000F000
Reserved by system Source   Edit  
NOTE_ATTRIB = 0x00000008
attributes changed Source   Edit  
NOTE_CHILD = 0x00000004'u32
am a child process Source   Edit  
NOTE_DELETE = 0x00000001
vnode was removed Source   Edit  
NOTE_EXEC = 0x20000000'u32
process exec'd Source   Edit  
NOTE_EXIT = 0x80000000'u32
process exited Source   Edit  
NOTE_EXTEND = 0x00000004
size increased Source   Edit  
NOTE_FORK = 0x40000000'u32
process forked Source   Edit  
NOTE_LOWAT = 0x00000001
low water mark Source   Edit  
NOTE_MSECONDS = 0x00000000'u32
Source   Edit  
NOTE_PCTRLMASK = 0xF0000000'u32
mask for hint bits Source   Edit  
NOTE_PDATAMASK = 0x000FFFFF'u32
mask for pid Source   Edit  
NOTE_RENAME = 0x00000020
vnode was renamed Source   Edit  
NOTE_REVOKE = 0x00000040
vnode access was revoked Source   Edit  
NOTE_TRACK = 0x00000001'u32
follow across forks Source   Edit  
NOTE_TRACKERR = 0x00000002'u32
could not track child Source   Edit  
NOTE_WRITE = 0x00000002
data contents changed Source   Edit  

Procs

proc EV_SET(event: ptr KEvent; ident: uint; filter: cshort; flags: cushort;
            fflags: cuint; data: int; udata: pointer) {.importc: "EV_SET",
    header: "<sys/event.h>", ...raises: [], tags: [], forbids: [].}
Fills event with given data. Source   Edit  
proc kevent(kqFD: cint; changelist: ptr KEvent; nchanges: cint;
            eventlist: ptr KEvent; nevents: cint; timeout: ptr Timespec): cint {.
    importc: "kevent", header: "<sys/event.h>", ...raises: [], tags: [],
    forbids: [].}
Manipulates queue for given kqFD descriptor. Source   Edit  
proc kqueue(): cint {.importc: "kqueue", header: "<sys/event.h>", ...raises: [],
                      tags: [], forbids: [].}
Creates new queue and returns its descriptor. Source   Edit