Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 14 Dec 2001 09:56:13 -0800 (PST)
From:      Luigi Rizzo <luigi@FreeBSD.org>
To:        cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/sys/conf files.i386 options.i386 src/sys/i386/i386 trap.c src/sys/kern kern_clock.c kern_intr.c kern_poll.c src/sys/net if.h if_var.h netisr.h src/sys/dev/fxp if_fxp.c if_fxpvar.h src/sys/pci if_dc.c if_dcreg.h if_sis.c if_sisreg.h
Message-ID:  <200112141756.fBEHuDb19786@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
luigi       2001/12/14 09:56:13 PST

  Modified files:
    sys/conf             files.i386 options.i386 
    sys/i386/i386        trap.c 
    sys/kern             kern_clock.c kern_intr.c 
    sys/net              if.h if_var.h netisr.h 
    sys/dev/fxp          if_fxp.c if_fxpvar.h 
    sys/pci              if_dc.c if_dcreg.h if_sis.c if_sisreg.h 
  Added files:
    sys/kern             kern_poll.c 
  Log:
  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
  
  Revision  Changes    Path
  1.385     +1 -0      src/sys/conf/files.i386
  1.162     +5 -0      src/sys/conf/options.i386
  1.123     +59 -2     src/sys/dev/fxp/if_fxp.c
  1.20      +4 -0      src/sys/dev/fxp/if_fxpvar.h
  1.209     +10 -0     src/sys/i386/i386/trap.c
  1.132     +12 -0     src/sys/kern/kern_clock.c
  1.65      +14 -0     src/sys/kern/kern_intr.c
  1.1       +422 -0    src/sys/kern/kern_poll.c (new)
  1.67      +9 -0      src/sys/net/if.h
  1.43      +9 -0      src/sys/net/if_var.h
  1.25      +2 -1      src/sys/net/netisr.h
  1.64      +83 -0     src/sys/pci/if_dc.c
  1.23      +7 -0      src/sys/pci/if_dcreg.h
  1.43      +77 -1     src/sys/pci/if_sis.c
  1.10      +3 -0      src/sys/pci/if_sisreg.h

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200112141756.fBEHuDb19786>