#include #include #include #include #include int main() { int kq, n; struct kevent kev; struct timespec to; kq = kqueue(); if (kq == -1) { printf("kqueue() failed: (%d)%s\n", errno, strerror(errno)); exit(1); } EV_SET(&kev, 0x55, EVFILT_USER, EV_ADD, 0, 0x1234, (void *) 0x5678); to.tv_sec = 0; to.tv_nsec = 0; if (kevent(kq, &kev, 1, NULL, 0, &to) == -1) { printf("1st kevent() failed: (%d)%s\n", errno, strerror(errno)); exit(1); } memset(&kev, 0, sizeof(struct kevent)); if ((n = kevent(kq, NULL, 0, &kev, 1, &to)) == -1) { printf("2nd kevent() failed: (%d)%s\n", errno, strerror(errno)); exit(1); } printf("n: %d, id: %p, filt: %d, fl: 0x%04X, ff:%u, data:%p, udata: %p\n", n, kev.ident, kev.filter, kev.flags, kev.fflags, kev.data, kev.udata); memset(&kev, 0, sizeof(struct kevent)); if ((n = kevent(kq, NULL, 0, &kev, 1, &to)) == -1) { printf("3rd kevent() failed: (%d)%s\n", errno, strerror(errno)); exit(1); } printf("n: %d, id: %p, filt: %d, fl: 0x%04X, ff:%u, data:%p, udata: %p\n", n, kev.ident, kev.filter, kev.flags, kev.fflags, kev.data, kev.udata); return 0; }