svn commit: r200510 - head/sys/kern

Robert Watson rwatson at FreeBSD.org
Mon Dec 14 06:18:43 PST 2009


On Mon, 14 Dec 2009, Luigi Rizzo wrote:

>  Properly fix callout handling by putting all the per-cpu info in
>  struct callout_cpu. From the comment in the file:
>
>  + * There is one struct callout_cpu per cpu, holding all relevant
>  + * state for the callout processing thread on the individual CPU.
>  + * In particular:
>  + *     cc_ticks is incremented once per tick in callout_cpu().
>  + *     It tracks the global 'ticks' but in a way that the individual
>  + *     threads should not worry about races in the order in which
>  + *     hardclock() and hardclock_cpu() run on the various CPUs.
>  + *     cc_softclock is advanced in callout_cpu() to point to the
>  + *     first entry in cc_callwheel that may need handling. In turn,
>  + *     a softclock() is scheduled so it can serve the various entries i
>  + *     such that cc_softclock <= i <= cc_ticks .
>
>  Together with a smaller patch committed in september, this fixes a
>  bug that affects 8.0 with apps that rely on callouts to fire exactly
>  in the number of ticks specified (qemu among them).
>  Right now, callouts in 8.0 fire one tick late.
>
>  This was discussed in september with JeffR and jhb

Once this has burned in, is it something you would consider appropriate to be 
an errata note candidate?

Robert N M Watson
Computer Laboratory
University of Cambridge


More information about the svn-src-head mailing list