freebsd-dev/sys/conf/options.i386
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

220 lines
5.3 KiB
Plaintext

# $FreeBSD$
# Options specific to the i386 platform kernels
DISABLE_PSE
MATH_EMULATE opt_math_emulate.h
GPL_MATH_EMULATE opt_math_emulate.h
PMAP_SHPGPERPROC opt_pmap.h
PPC_PROBE_CHIPSET opt_ppc.h
PPC_DEBUG opt_ppc.h
SHOW_BUSYBUFS
PANIC_REBOOT_WAIT_TIME opt_panic.h
MAXMEM
PERFMON opt_perfmon.h
POWERFAIL_NMI opt_trap.h
AUTO_EOI_1 opt_auto_eoi.h
AUTO_EOI_2 opt_auto_eoi.h
CONSPEED opt_comconsole.h
I586_PMC_GUPROF opt_i586_guprof.h
WLCACHE opt_wavelan.h
WLDEBUG opt_wavelan.h
COMPAT_OLDISA
BROKEN_KEYBOARD_RESET opt_reset.h
KSTACK_PAGES
# Options for emulators. These should only be used at config time, so
# they are handled like options for static file systems
# (see src/sys/conf/options), except for broken debugging options.
IBCS2 opt_dontuse.h
COMPAT_LINUX opt_dontuse.h
DEBUG_LINUX opt_linux.h
COMPAT_SVR4 opt_dontuse.h
DEBUG_SVR4 opt_svr4.h
PECOFF_SUPPORT opt_dontuse.h
PECOFF_DEBUG opt_pecoff.h
# i386 SMP options
APIC_IO opt_global.h
# Change KVM size. Changes things all over the kernel.
KVA_PAGES opt_global.h
CLK_CALIBRATION_LOOP opt_clock.h
CLK_USE_I8254_CALIBRATION opt_clock.h
CLK_USE_TSC_CALIBRATION opt_clock.h
TIMER_FREQ opt_clock.h
NO_F00F_HACK opt_cpu.h
CPU_BLUELIGHTNING_FPU_OP_CACHE opt_cpu.h
CPU_BLUELIGHTNING_3X opt_cpu.h
CPU_BTB_EN opt_cpu.h
CPU_CYRIX_NO_LOCK opt_cpu.h
CPU_DIRECT_MAPPED_CACHE opt_cpu.h
CPU_DISABLE_5X86_LSSER opt_cpu.h
CPU_FASTER_5X86_FPU opt_cpu.h
CPU_I486_ON_386 opt_cpu.h
CPU_IORT opt_cpu.h
CPU_L2_LATENCY opt_cpu.h
CPU_LOOP_EN opt_cpu.h
CPU_PPRO2CELERON opt_cpu.h
CPU_RSTK_EN opt_cpu.h
CPU_SUSP_HLT opt_cpu.h
CPU_UPGRADE_HW_CACHE opt_cpu.h
CPU_WT_ALLOC opt_cpu.h
CYRIX_CACHE_WORKS opt_cpu.h
CYRIX_CACHE_REALLY_WORKS opt_cpu.h
NO_MEMORY_HOLE opt_cpu.h
CPU_ENABLE_SSE opt_cpu.h
# The CPU type affects the endian conversion functions all over the kernel.
I386_CPU opt_global.h
I486_CPU opt_global.h
I586_CPU opt_global.h
I686_CPU opt_global.h
MAXCONS opt_syscons.h
SC_ALT_MOUSE_IMAGE opt_syscons.h
SC_CUT_SPACES2TABS opt_syscons.h
SC_CUT_SEPCHARS opt_syscons.h
SC_DEBUG_LEVEL opt_syscons.h
SC_DFLT_FONT opt_syscons.h
SC_DISABLE_DDBKEY opt_syscons.h
SC_DISABLE_REBOOT opt_syscons.h
SC_HISTORY_SIZE opt_syscons.h
SC_KERNEL_CONS_ATTR opt_syscons.h
SC_KERNEL_CONS_REV_ATTR opt_syscons.h
SC_MOUSE_CHAR opt_syscons.h
SC_NO_CUTPASTE opt_syscons.h
SC_NO_FONT_LOADING opt_syscons.h
SC_NO_HISTORY opt_syscons.h
SC_NO_SYSMOUSE opt_syscons.h
SC_NORM_ATTR opt_syscons.h
SC_NORM_REV_ATTR opt_syscons.h
SC_PIXEL_MODE opt_syscons.h
SC_RENDER_DEBUG opt_syscons.h
SC_TWOBUTTON_MOUSE opt_syscons.h
VGA_ALT_SEQACCESS opt_vga.h
VGA_DEBUG opt_vga.h
VGA_NO_FONT_LOADING opt_vga.h
VGA_NO_MODE_CHANGE opt_vga.h
VGA_SLOW_IOACCESS opt_vga.h
VGA_WIDTH90 opt_vga.h
VESA opt_vesa.h
VESA_DEBUG opt_vesa.h
PSM_HOOKRESUME opt_psm.h
PSM_RESETAFTERSUSPEND opt_psm.h
PSM_DEBUG opt_psm.h
PCI_ENABLE_IO_MODES opt_pci.h
PCIC_RESUME_RESET opt_pcic.h
ATKBD_DFLT_KEYMAP opt_atkbd.h
KBD_DISABLE_KEYMAP_LOAD opt_kbd.h
KBD_INSTALL_CDEV opt_kbd.h
KBD_MAXRETRY opt_kbd.h
KBD_MAXWAIT opt_kbd.h
KBD_RESETDELAY opt_kbd.h
KBDIO_DEBUG opt_kbd.h
EISA_SLOTS opt_eisa.h
# pcvt(4) has a bunch of options
FAT_CURSOR opt_pcvt.h
XSERVER opt_pcvt.h
PCVT_24LINESDEF opt_pcvt.h
PCVT_CTRL_ALT_DEL opt_pcvt.h
PCVT_META_ESC opt_pcvt.h
PCVT_NSCREENS opt_pcvt.h
PCVT_PRETTYSCRNS opt_pcvt.h
PCVT_SCANSET opt_pcvt.h
PCVT_SCREENSAVER opt_pcvt.h
PCVT_USEKBDSEC opt_pcvt.h
PCVT_VT220KEYB opt_pcvt.h
PCVT_GREENSAVER opt_pcvt.h
# voxware options
GUS_DMA2 opt_sound.h
GUS_DMA opt_sound.h
GUS_IRQ opt_sound.h
# Video spigot
SPIGOT_UNSECURE opt_spigot.h
# -------------------------------
# isdn4bsd: passive ISA cards
# -------------------------------
TEL_S0_8 opt_i4b.h
TEL_S0_16 opt_i4b.h
TEL_S0_16_3 opt_i4b.h
AVM_A1 opt_i4b.h
USR_STI opt_i4b.h
ITKIX1 opt_i4b.h
ELSA_PCC16 opt_i4b.h
# -------------------------------
# isdn4bsd: passive ISA PnP cards
# -------------------------------
CRTX_S0_P opt_i4b.h
DRN_NGO opt_i4b.h
TEL_S0_16_3_P opt_i4b.h
SEDLBAUER opt_i4b.h
DYNALINK opt_i4b.h
ASUSCOM_IPAC opt_i4b.h
ELSA_QS1ISA opt_i4b.h
SIEMENS_ISURF2 opt_i4b.h
EICON_DIVA opt_i4b.h
COMPAQ_M610 opt_i4b.h
# -------------------------------
# isdn4bsd: passive PCI cards
# -------------------------------
ELSA_QS1PCI opt_i4b.h
AVM_A1_PCI opt_i4b.h
# -------------------------------
# isdn4bsd: passive PCMCIA cards
# -------------------------------
#AVM_A1_PCMCIA opt_i4b.h
# -------------------------------
# isdn4bsd: misc options
# -------------------------------
# temporary workaround for SMP machines
I4B_SMP_WORKAROUND opt_i4b.h
# enable VJ compression code for ipr i/f
IPR_VJ opt_i4b.h
IPR_LOG opt_i4b.h
# -------------------------------
# oltr: build options
# -------------------------------
# Exclude microcode options
OLTR_NO_TMS_MAC opt_oltr.h
OLTR_NO_HAWKEYE_MAC opt_oltr.h
OLTR_NO_BULLSEYE_MAC opt_oltr.h
# Total number of ports controlled by the dgb(4) driver.
# Defaults to NDGB*16.
NDGBPORTS opt_dgb.h
# Device options
DEV_NPX opt_npx.h
DEV_APM opt_apm.h
DEV_SPLASH opt_splash.h
# SMB/CIFS requester
NETSMB opt_netsmb.h
NETSMBCRYPTO opt_netsmb.h
# SMB/CIFS filesystem
SMBFS
# -------------------------------
# Polling device handling
# -------------------------------
DEVICE_POLLING opt_global.h
# -------------------------------
# EOF
# -------------------------------