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>