Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 14 Jun 2004 13:21:42 -0400
From:      John Baldwin <jhb@FreeBSD.org>
To:        freebsd-arch@FreeBSD.org
Cc:        John Polstra <jdp@polstra.com>
Subject:   Re: RFC: API change for sema_timedwait
Message-ID:  <200406141321.42275.jhb@FreeBSD.org>
In-Reply-To: <XFMail.20040612121521.jdp@polstra.com>
References:  <XFMail.20040612121521.jdp@polstra.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Saturday 12 June 2004 03:15 pm, John Polstra wrote:
> Before 5.x becomes -stable, I'd like to change the API of
> sema_timedwait(9).  This function is used in only 3 places in the
> kernel, all in "dev/ips/ips_commands.c".
>
> Currently, sema_timedwait returns 0 if the operation fails due to a
> timeout.  On success, it returns a non-zero value.  This is precisely
> the opposite of the standard convention in the kernel, where 0 means
> success and a non-zero value (taken from <sys/errno.h>) means failure.
> The convention exists because most functions can succeed in only one
> way but can fail in several different ways.
>
> The reason I care about this is because I'd like to add new functions
> sema_wait_sig() and sema_timedwait_sig() which can be interrupted
> by a signal.  Then sema_timedwait_sig could fail in two different
> ways: as a result of a timeout or as a result of a signal.  If these
> functions returned proper errno values on failure, it would be easy to
> distinguish between the two failure cases.
>
> This change would also make the return values of sema_timedwait,
> sema_wait_sig, and sema_timedwait_sig consistent with the analogous
> condition variable operations cv_timedwait, cv_wait_sig, and
> cv_timedwait_sig and with tsleep and msleep.
>
> Does this change sound OK to you folks?

Sounds ok to me.

-- 
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?200406141321.42275.jhb>