* On Windows, you need to supply -DMAKE_STATIC in CFLAGS when building the static library. This does not apply when using cmake. * When passing a knote pointer to the kernel, the reference count of the knote structure should be incremented. Conversely, when the pointer has been returned from the kernel and the event unregistered from the kernel, the reference count should be decremented. * Some functions should crash instead of silently printing a debug message.. for example, knote_release(). * knote_get_by_ident uses 'short' for the ident, but the actual datatype is 'uintptr_t'. * need to uninitialize library after fork() using pthread_atfork() * Solaris unit test failure. LD_LIBRARY_PATH="..:/usr/sfw/lib/64" ./kqtest 1: test_peer_close_detection() 2: test_kqueue() 3: test_kevent_socket_add() 4: test_kevent_socket_del() 5: test_kevent_socket_add_without_ev_add() 6: test_kevent_socket_get() [read.c:84]: Unexpected event:_test_no_kevents(): [ident=7, filter=-1, flags = 1 (EV_ADD), fflags = 0, data=0, udata=fffffd7fff08c6b4]: Error 0 * There are a number of stub functions that silently fail or succeed. These need to be cleaned up; at a minimum, they should emit very loud debugging output saying "FIXME -- UNIMPLEMENTED". $ grep STUB src/*/*.c src/linux/proc.c: return (-1); /*STUB*/ src/linux/proc.c: return (0); /* STUB */ src/linux/proc.c: return (0); /* STUB */ src/linux/proc.c: return (0); /* STUB */ src/linux/proc.c: return (0); /* STUB */ src/linux/proc.c: return (0); /* STUB */ src/linux/read.c: return (-1); /* STUB */ src/linux/timer.c: return (0); /* STUB */ src/linux/vnode.c: return (-1); /* FIXME - STUB */ src/linux/write.c: return (-1); /* STUB */ src/posix/timer.c: return (-1); /* STUB */ src/solaris/socket.c: return (-1); /* STUB */ src/solaris/timer.c: return (-1); /* STUB */ src/windows/read.c: return (-1); /* STUB */ src/windows/timer.c: return (0); /* STUB */ * kqueue() should defer thread cancellation until the end. * kevent() should defer thread cancellation and call pthread_testcancel() before and after the call to kevent_wait(). This may require changing the way that EINTR is handled, to make sure that the EINTR is propagated up the call stack to kevent().