Date: Mon, 14 Dec 2009 14:18:42 +0000 (GMT) From: Robert Watson <rwatson@FreeBSD.org> To: Luigi Rizzo <luigi@FreeBSD.org> Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r200510 - head/sys/kern Message-ID: <alpine.BSF.2.00.0912141418090.61723@fledge.watson.org> In-Reply-To: <200912141223.nBECNlDZ026381@svn.freebsd.org> References: <200912141223.nBECNlDZ026381@svn.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?alpine.BSF.2.00.0912141418090.61723>