1 /** 2 * D header file for NetBSD. 3 * 4 * Copyright: Copyright Martin Nowak 2012. 5 * License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0). 6 * Authors: Martin Nowak 7 * 8 * http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/sys/event.h 9 */ 10 11 /* Copyright Martin Nowak 2012. 12 * Distributed under the Boost Software License, Version 1.0. 13 * (See accompanying file LICENSE or copy at 14 * http://www.boost.org/LICENSE_1_0.txt) 15 */ 16 module core.sys.netbsd.sys.event; 17 18 version (NetBSD): 19 extern (C): 20 21 import core.stdc.stdint; // intptr_t, uintptr_t 22 import core.sys.posix.time; // timespec 23 24 25 enum 26 { 27 EVFILT_READ = 0, 28 EVFILT_WRITE = 1, 29 EVFILT_AIO = 2, 30 EVFILT_VNODE = 3, 31 EVFILT_PROC = 4, 32 EVFILT_SIGNAL = 5, 33 EVFILT_TIMER = 6, 34 EVFILT_SYSCOUNT = 7 35 } 36 37 extern(D) void EV_SET(kevent_t* kevp, typeof(kevent_t.tupleof) args) 38 { 39 *kevp = kevent_t(args); 40 } 41 42 struct kevent_t 43 { 44 uintptr_t ident; 45 uint filter; 46 uint flags; 47 uint fflags; 48 ulong data; 49 void *udata; 50 } 51 52 enum 53 { 54 /* actions */ 55 EV_ADD = 0x0001, 56 EV_DELETE = 0x0002, 57 EV_ENABLE = 0x0004, 58 EV_DISABLE = 0x0008, 59 60 /* flags */ 61 EV_ONESHOT = 0x0010, 62 EV_CLEAR = 0x0020, 63 64 EV_SYSFLAGS = 0xF000, 65 EV_FLAG1 = 0x2000, 66 67 /* returned values */ 68 EV_EOF = 0x8000, 69 EV_ERROR = 0x4000 70 } 71 72 enum 73 { 74 /* 75 * data/hint flags for EVFILT_{READ|WRITE}, shared with userspace 76 */ 77 NOTE_LOWAT = 0x0001, 78 79 /* 80 * data/hint flags for EVFILT_VNODE, shared with userspace 81 */ 82 NOTE_DELETE = 0x0001, 83 NOTE_WRITE = 0x0002, 84 NOTE_EXTEND = 0x0004, 85 NOTE_ATTRIB = 0x0008, 86 NOTE_LINK = 0x0010, 87 NOTE_RENAME = 0x0020, 88 NOTE_REVOKE = 0x0040, 89 90 /* 91 * data/hint flags for EVFILT_PROC, shared with userspace 92 */ 93 NOTE_EXIT = 0x80000000, 94 NOTE_FORK = 0x40000000, 95 NOTE_EXEC = 0x20000000, 96 NOTE_PCTRLMASK = 0xf0000000, 97 NOTE_PDATAMASK = 0x000fffff, 98 99 /* additional flags for EVFILT_PROC */ 100 NOTE_TRACK = 0x00000001, 101 NOTE_TRACKERR = 0x00000002, 102 NOTE_CHILD = 0x00000004 103 104 } 105 106 int kqueue(); 107 int __kevent50(int kq, const kevent_t *changelist, int nchanges, 108 kevent_t *eventlist, int nevents, 109 const timespec *timeout); 110 alias kevent = __kevent50;