Subject: Re: Importing kqueue's from FreeBSD...
To: Charles M. Hannum <firstname.lastname@example.org>
From: Bill Sommerfeld <email@example.com>
Date: 03/15/2001 17:37:00
> One of the interesting things about the Solaris and /dev/poll is that
> the SVR4 poll(2) lended itself to reusing the structures for both
> interfaces without introducing overhead in the `nobody listening' case.
It seems that it should be possible to migrate towards a common
in-kernel event interface which handles the following cases..
- process waiting in select() or poll()
- process sleeping for event in blocking read() or what have you
- process has SIGIO established on descriptor.
- in-kernel subsystem wants callback ..
- process has kevent established
.. with a single hook which just walks down a list of callbacks/"filters".
Look at sowakeup() in uipc_socket2.c for instance (it currently
handles the 4 of the 5 above which are included in NetBSD). That's
gotta hurt since in most cases only one of the notifications will be
in use for any given socket.