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-all
mailing list