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
Mon Feb 7 03:19:06 GMT 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-src
mailing list