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

Nate Lawson nate at root.org
Sun Feb 6 19:19:06 PST 2005


This is wonderful, thank you!

Ian Dowse wrote:
> 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


-- 
Nate


More information about the cvs-all mailing list