Subject: Re: Importing kqueue's from FreeBSD...
To: Charles M. Hannum <root@ihack.net>
From: Bill Sommerfeld <sommerfeld@orchard.arlington.ma.us>
List: tech-kern
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.

Indeed.

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.

					- Bill