#
e5223044 |
| 15-Feb-2002 |
Luigi Rizzo <luigi@FreeBSD.org> |
Make this compile after changes to kse structures. This escaped because DEVICE_POLLING is disabled in LINT being not compatible with SMP. In fact, it is only a runtime problem, so if we could recogni
Make this compile after changes to kse structures. This escaped because DEVICE_POLLING is disabled in LINT being not compatible with SMP. In fact, it is only a runtime problem, so if we could recognize that we are building a LINT kernel we could as well disable the check for SMP being defined.
Reported-by: Joe Clarke
show more ...
|
#
daccb638 |
| 12-Feb-2002 |
Luigi Rizzo <luigi@FreeBSD.org> |
MFS: synchronize the code with the version in -stable, specifically: + SYSCTL_ULONG -> SYSCTL_UINT + some procedure renaming and variable rearrangement + fix the 'interface going deaf' problem sam
MFS: synchronize the code with the version in -stable, specifically: + SYSCTL_ULONG -> SYSCTL_UINT + some procedure renaming and variable rearrangement + fix the 'interface going deaf' problem same as in -stable.
show more ...
|
#
d105c784 |
| 19-Dec-2001 |
Luigi Rizzo <luigi@FreeBSD.org> |
Complete the device polling support by adding a thread in charge of polling interfaces at the lowest possible priority (this might result in softnetisr being scheduled, but there is no risk of livelo
Complete the device polling support by adding a thread in charge of polling interfaces at the lowest possible priority (this might result in softnetisr being scheduled, but there is no risk of livelock because they have a higher priority than this thread).
show more ...
|
#
e4fc250c |
| 14-Dec-2001 |
Luigi Rizzo <luigi@FreeBSD.org> |
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 enab
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
show more ...
|