freebsd-dev/sys
Luigi Rizzo e4fc250c15 Device Polling code for -current.
Non-SMP, i386-only, no polling in the idle loop at the moment.

To use this code you must compile a kernel with

        options DEVICE_POLLING

and at runtime enable polling with

        sysctl kern.polling.enable=1

The percentage of CPU reserved to userland can be set with

        sysctl kern.polling.user_frac=NN (default is 50)

while the remainder is used by polling device drivers and netisr's.
These are the only two variables that you should need to touch. There
are a few more parameters in kern.polling but the default values
are adequate for all purposes. See the code in kern_poll.c for
more details on them.

Polling in the idle loop will be implemented shortly by introducing
a kernel thread which does the job. Until then, the amount of CPU
dedicated to polling will never exceed (100-user_frac).
The equivalent (actually, better) code for -stable is at

	http://info.iet.unipi.it/~luigi/polling/

and also supports polling in the idle loop.

NOTE to Alpha developers:
There is really nothing in this code that is i386-specific.
If you move the 2 lines supporting the new option from
sys/conf/{files,options}.i386 to sys/conf/{files,options} I am
pretty sure that this should work on the Alpha as well, just that
I do not have a suitable test box to try it. If someone feels like
trying it, I would appreciate it.

NOTE to other developers:
sure some things could be done better, and as always I am open to
constructive criticism, which a few of you have already given and
I greatly appreciated.
However, before proposing radical architectural changes, please
take some time to possibly try out this code, or at the very least
read the comments in kern_poll.c, especially re. the reason why I
am using a soft netisr and cannot (I believe) replace it with a
simple timeout.

Quick description of files touched by this commit:

sys/conf/files.i386
        new file kern/kern_poll.c
sys/conf/options.i386
        new option
sys/i386/i386/trap.c
        poll in trap (disabled by default)
sys/kern/kern_clock.c
        initialization and hardclock hooks.
sys/kern/kern_intr.c
        minor swi_net changes
sys/kern/kern_poll.c
        the bulk of the code.
sys/net/if.h
        new flag
sys/net/if_var.h
        declaration for functions used in device drivers.
sys/net/netisr.h
        NETISR_POLL
sys/dev/fxp/if_fxp.c
sys/dev/fxp/if_fxpvar.h
sys/pci/if_dc.c
sys/pci/if_dcreg.h
sys/pci/if_sis.c
sys/pci/if_sisreg.h
        device driver modifications
2001-12-14 17:56:12 +00:00
..
alpha Enable UFS_DIRHASH in the GENERIC kernel. 2001-12-14 16:27:11 +00:00
amd64 Device Polling code for -current. 2001-12-14 17:56:12 +00:00
arm We need machine/{signal,ucontext}.h to build a cross GCC compiler. 2001-12-09 19:39:49 +00:00
boot mdoc(7) police: remove hard sentence break which I didn't 2001-12-14 09:06:11 +00:00
cam Remove PAO3 dependent part where I missed to remove at last commit. 2001-12-10 02:07:34 +00:00
coda Update to C99, s/__FUNCTION__/__func__/, 2001-12-10 08:09:49 +00:00
compat Update to C99, s/__FUNCTION__/__func__/, 2001-12-10 08:09:49 +00:00
conf Device Polling code for -current. 2001-12-14 17:56:12 +00:00
contrib Fix initialisation of struct nat entry, to solve a panic that occurs 2001-12-05 10:46:24 +00:00
crypto fixed the cast128 calculation with a short cipher key length. 2001-11-27 14:11:47 +00:00
ddb Implement a "kill" DDB command which is an interface to psignal() that 2001-11-27 19:56:28 +00:00
dev Device Polling code for -current. 2001-12-14 17:56:12 +00:00
fs Add module dependency on libmchain. 2001-12-13 13:08:34 +00:00
geom Return EOPNOTSUPP for unknown module events. 2001-11-17 00:46:08 +00:00
gnu Update to C99, s/__FUNCTION__/__func__/, 2001-12-10 08:09:49 +00:00
i4b Update to C99, s/__FUNCTION__/__func__/, 2001-12-10 08:09:49 +00:00
i386 Device Polling code for -current. 2001-12-14 17:56:12 +00:00
ia64 Enable UFS_DIRHASH in the GENERIC kernel. 2001-12-14 16:27:11 +00:00
isa Update to C99, s/__FUNCTION__/__func__/, 2001-12-10 08:09:49 +00:00
isofs/cd9660 Fix mounting root from a ISO9660 filesystem on a SCSI CDROM. 2001-11-27 03:55:43 +00:00
kern Device Polling code for -current. 2001-12-14 17:56:12 +00:00
libkern rcsid[]->__FBSDID 2001-11-07 19:55:16 +00:00
modules Connect libiconv to the build. 2001-12-12 10:11:16 +00:00
net Device Polling code for -current. 2001-12-14 17:56:12 +00:00
netatalk Give struct socket structures a ref counting interface similar to 2001-11-17 03:07:11 +00:00
netatm Give struct socket structures a ref counting interface similar to 2001-11-17 03:07:11 +00:00
netgraph Update to C99, s/__FUNCTION__/__func__/, 2001-12-10 08:09:49 +00:00
netinet Undo one of my last minute changes; move sc_iss up earlier so it 2001-12-13 04:05:26 +00:00
netinet6 Update to C99, s/__FUNCTION__/__func__/, 2001-12-10 08:09:49 +00:00
netipx Give struct socket structures a ref counting interface similar to 2001-11-17 03:07:11 +00:00
netkey Newer SA is prefered for a out-bound packet than old one 2001-12-05 05:40:49 +00:00
netnatm Give struct socket structures a ref counting interface similar to 2001-11-17 03:07:11 +00:00
netncp Update to C99, s/__FUNCTION__/__func__/, 2001-12-10 08:09:49 +00:00
netns Give struct socket structures a ref counting interface similar to 2001-11-17 03:07:11 +00:00
netsmb Update to C99, s/__FUNCTION__/__func__/, 2001-12-10 08:09:49 +00:00
nfs Unwind some more macros. NFSMADV() was kinda silly since it was right 2001-09-28 04:37:08 +00:00
nfsclient This fixes a large number of bugs in our NFS client side code. A recent 2001-12-14 01:16:57 +00:00
nfsserver When VOP_SYMLINK fails, the value of *vpp is junk, so we must NULL 2001-12-04 16:53:42 +00:00
pc98 Enable UFS_DIRHASH in the GENERIC kernel. 2001-12-14 16:27:11 +00:00
pccard Better error message when cardtype is not recognized 2001-11-13 06:46:19 +00:00
pci Device Polling code for -current. 2001-12-14 17:56:12 +00:00
posix4 KSE Milestone 2 2001-09-12 08:38:13 +00:00
powerpc Overhaul the per-CPU support a bit: 2001-12-11 23:33:44 +00:00
rpc
security/lomac Split out NAI Labs license and BSD license to prevent the accidental 2001-12-03 00:21:18 +00:00
sparc64 Overhaul the per-CPU support a bit: 2001-12-11 23:33:44 +00:00
svr4
sys Let M_LEADINGSPACE write into non-shared mbufs. 2001-12-14 17:31:58 +00:00
tools Move from using PCCARD_ symbols gereated from this file to using PCMCIA_ 2001-11-11 20:15:06 +00:00
ufs Minimize the time necessary to suspend operations on a filesystem 2001-12-14 00:15:06 +00:00
vm This fixes a large number of bugs in our NFS client side code. A recent 2001-12-14 01:16:57 +00:00
Makefile