Skip site navigation (1)Skip section navigation (2)
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>