cvs commit: src/share/man/man9 Makefile timeout.9 src/sys/sys callout.h src/sys/kern kern_timeout.c

Ian Dowse iedowse at FreeBSD.org
Sun Feb 6 18:47:34 PST 2005


iedowse     2005-02-07 02:47:33 UTC

  FreeBSD src repository

  Modified files:
    share/man/man9       Makefile timeout.9 
    sys/sys              callout.h 
    sys/kern             kern_timeout.c 
  Log:
  Add a mechanism for associating a mutex with a callout when the
  callout is first initialised, using a new function callout_init_mtx().
  The callout system will acquire this mutex before calling the callout
  function and release it on return.
  
  In addition, the callout system uses the mutex to avoid most of the
  complications and race conditions inherent in asynchronous timer
  facilities, so mutex-protected callouts have much simpler semantics.
  As long as the mutex is held when invoking callout_stop() or
  callout_reset(), then these functions will guarantee that the callout
  will be stopped, even if softclock() had already begun to process
  the callout.
  
  Existing Giant-locked callouts will automatically pick up the new
  race-free semantics. This should close a number of race conditions
  in the USB code and probably other areas of the kernel too.
  
  There should be no change in behaviour for "MP-safe" callouts; these
  still need to use the techniques mentioned in timeout(9) to avoid
  race conditions.
  
  Revision  Changes    Path
  1.253     +6 -1      src/share/man/man9/Makefile
  1.27      +50 -1     src/share/man/man9/timeout.9
  1.96      +106 -15   src/sys/kern/kern_timeout.c
  1.28      +5 -0      src/sys/sys/callout.h


More information about the cvs-all mailing list