| /** |
| * D header file for NetBSD. |
| * |
| * Copyright: Copyright Martin Nowak 2012. |
| * License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0). |
| * Authors: Martin Nowak |
| * |
| * http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/sys/event.h |
| */ |
| |
| /* Copyright Martin Nowak 2012. |
| * Distributed under the Boost Software License, Version 1.0. |
| * (See accompanying file LICENSE or copy at |
| * http://www.boost.org/LICENSE_1_0.txt) |
| */ |
| module core.sys.netbsd.sys.event; |
| |
| version (NetBSD): |
| extern (C): |
| |
| import core.stdc.stdint; // intptr_t, uintptr_t |
| import core.sys.posix.time; // timespec |
| |
| |
| enum |
| { |
| EVFILT_READ = 0, |
| EVFILT_WRITE = 1, |
| EVFILT_AIO = 2, |
| EVFILT_VNODE = 3, |
| EVFILT_PROC = 4, |
| EVFILT_SIGNAL = 5, |
| EVFILT_TIMER = 6, |
| EVFILT_SYSCOUNT = 7 |
| } |
| |
| extern(D) void EV_SET(kevent_t* kevp, typeof(kevent_t.tupleof) args) |
| { |
| *kevp = kevent_t(args); |
| } |
| |
| struct kevent_t |
| { |
| uintptr_t ident; |
| uint filter; |
| uint flags; |
| uint fflags; |
| ulong data; |
| void *udata; |
| } |
| |
| enum |
| { |
| /* actions */ |
| EV_ADD = 0x0001, |
| EV_DELETE = 0x0002, |
| EV_ENABLE = 0x0004, |
| EV_DISABLE = 0x0008, |
| |
| /* flags */ |
| EV_ONESHOT = 0x0010, |
| EV_CLEAR = 0x0020, |
| |
| EV_SYSFLAGS = 0xF000, |
| EV_FLAG1 = 0x2000, |
| |
| /* returned values */ |
| EV_EOF = 0x8000, |
| EV_ERROR = 0x4000 |
| } |
| |
| enum |
| { |
| /* |
| * data/hint flags for EVFILT_{READ|WRITE}, shared with userspace |
| */ |
| NOTE_LOWAT = 0x0001, |
| |
| /* |
| * data/hint flags for EVFILT_VNODE, shared with userspace |
| */ |
| NOTE_DELETE = 0x0001, |
| NOTE_WRITE = 0x0002, |
| NOTE_EXTEND = 0x0004, |
| NOTE_ATTRIB = 0x0008, |
| NOTE_LINK = 0x0010, |
| NOTE_RENAME = 0x0020, |
| NOTE_REVOKE = 0x0040, |
| |
| /* |
| * data/hint flags for EVFILT_PROC, shared with userspace |
| */ |
| NOTE_EXIT = 0x80000000, |
| NOTE_FORK = 0x40000000, |
| NOTE_EXEC = 0x20000000, |
| NOTE_PCTRLMASK = 0xf0000000, |
| NOTE_PDATAMASK = 0x000fffff, |
| |
| /* additional flags for EVFILT_PROC */ |
| NOTE_TRACK = 0x00000001, |
| NOTE_TRACKERR = 0x00000002, |
| NOTE_CHILD = 0x00000004 |
| |
| } |
| |
| int kqueue(); |
| int __kevent50(int kq, const kevent_t *changelist, int nchanges, |
| kevent_t *eventlist, int nevents, |
| const timespec *timeout); |
| alias kevent = __kevent50; |