Date: Mon, 1 Mar 2004 15:55:28 -0500 From: John Baldwin <jhb@FreeBSD.org> To: David Xu <davidxu@freebsd.org> Cc: threads@freebsd.org Subject: Re: Proper algorithm for return values from sleep Message-ID: <200403011555.28960.jhb@FreeBSD.org> In-Reply-To: <403FEE22.2040507@freebsd.org> References: <200402271455.38197.jhb@FreeBSD.org> <403FEE22.2040507@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Friday 27 February 2004 08:25 pm, David Xu wrote: > John Baldwin wrote: > > As part of my sleep queue work, I found that msleep() and the cv_wait() > > functions have differing semantics for return vales. It appears that at > > least some of the early changes KSE made to msleep() were ported to cv's > > but not later cleanups. Specifically, in msleep(), if we are awakened > > while checking for signals but we didn't find a signal, we prefer a > > timeout-related return value over a signal-related value. > > Yes, I think cv and msleep code should be synchronized. > > > Secondly, cv's don't really handle > > td_intrval very well at all. > > It is a bug. :-( > > > It has one hard-coded override for the P_EXIT > > case but that's it. > > I think it should includes P_SINGLE_EXIT, P_WEXIT is set when there is > only one thread in process (see exit1() ). both msleep and cv are > incorrect in the case. > > Are you fixing these bugs ? Well, I'll fix them if I can figure out what the correct algorithm should be. :) Do you think you could sketch it out in psuedo-code? -- John Baldwin <jhb@FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/ "Power Users Use the Power to Serve" = http://www.FreeBSD.org
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200403011555.28960.jhb>