sigwait return 4

Kostik Belousov kostikbel at gmail.com
Wed Aug 24 22:12:26 UTC 2011


On Thu, Aug 25, 2011 at 12:29:29AM +0300, Kostik Belousov wrote:
> > Solaris is simply wrong in the same way we were wrong. Although POSIX
> > may not be as clear on this as one may like, its intention is clear and
> > additionally not returning EINTR reduces subtle portability problems.
> Can you, please, describe why do you consider the behaviour prohibiting
> return of EINTR reasonable ? I do consider that the Solaris behaviour is
> useful.
> 
> Since we went the other route, the addition to sigwait(2) manpage that
> clarifies this looks useful. And, sigwait(2) shall be sigwait(3). Also,
> the sentence "the sigwaitinfo() function is equivalent to sigwait() ..."
> in the sigwaitinfo(2) is not complete, due to EINTR.

Like this (svn cp to be applied).

diff --git a/lib/libc/sys/sigwait.2 b/lib/libc/sys/sigwait.2
index 8c00cf4..a9e605c 100644
--- a/lib/libc/sys/sigwait.2
+++ b/lib/libc/sys/sigwait.2
@@ -27,7 +27,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd November 11, 2005
+.Dd August 24, 2011
 .Dt SIGWAIT 2
 .Os
 .Sh NAME
@@ -82,6 +82,14 @@ selected, it will be the lowest numbered one.
 The selection order between realtime
 and non-realtime signals, or between multiple pending non-realtime signals,
 is unspecified.
+.Sh IMPLEMENTATION NOTES
+The
+.Fn sigwait
+function is implemented as a wrapper around the
+.Fn __sys_sigwait
+system call, which retries the call on
+.Er EINTR
+error.
 .Sh RETURN VALUES
 If successful,
 .Fn sigwait
diff --git a/lib/libc/sys/sigwaitinfo.2 b/lib/libc/sys/sigwaitinfo.2
index 41be9e2..a83de06 100644
--- a/lib/libc/sys/sigwaitinfo.2
+++ b/lib/libc/sys/sigwaitinfo.2
@@ -27,7 +27,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd November 11, 2005
+.Dd August 24, 2011
 .Dt SIGTIMEDWAIT 2
 .Os
 .Sh NAME
@@ -116,6 +116,16 @@ except that the selected signal number shall be stored in the
 member, and the cause of the signal shall be stored in the
 .Va si_code
 member.
+Besides this, the
+.Fn sigwaitinfo
+and
+.Fn sigtimedwait
+system calls may return
+.Er EINTR
+if interrupted by signal, which is not allowed for the
+.Fn sigwait
+function.
+.Pp
 If any value is queued to the selected signal, the first such queued
 value is dequeued and, if the info argument is
 .Pf non- Dv NULL ,
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-stable/attachments/20110824/6a81da69/attachment.pgp


More information about the freebsd-stable mailing list