INTRODUCTION ============ We are pleased to announce the beta release of kpoll, an efficient way to mimic the behaviour of poll in kernel space. kpoll is based upon the excellent eventpoll from David Libenzi . eventpoll is a strictly edge triggered kernel polling device and which not usable in all situations. An application will in most cases have to do addtional request to poll() to check resulting readiness after a partial reads or during asynchronous operations. Unfortunately Davide wants to keep eventpoll this way so we decided to introduce /dev/kpoll. kpoll solves the problem by combining edge and level triggering to achieve the semantics more in line with poll() and select(). A few other issues have been address in kpoll: 1) No need to explicitly include POLLERR and POLLHUP in the poll mask. Those are return events and will be signalled on occurance. 2) A close() on a fd will automatically remove the fd from the pollset. 3) It is possible to build kpoll as a module. 4) It is possible to update filedescriptors in the poll set from other threads INSTALL ======= 1) patch your kernel cd /usr/src/linux patch -p1 < kpoll-beta1.0-2.4.18.patch 2) create the /dev/kpoll device mknod --mode=666 /dev/kpoll c 10 152 3) enable kpoll in configuration, build and install kpoll may be build as a module or static included 4) use kpoll enabled software and enjoy ! At this point in time this means patched Erlang/OTP R8B-1. There is no programming guide or man page available (yet). The usage onliner: "open /dev/kpoll, allocate result sets ioctl(KP_ALLOC), add files to poll set (write), poll ioctl(KP_POLL)". REMARKS ======= 1) /dev/kpoll only supports socket and pipe fds. 2) check your include paths. (i.e. /usr/include/linux points to the kpoll enabled kernels include/linux). Feedback, improvements and comments are welcomed and encouraged. Best Regards Per Bergqvist Tony Rogvall