poll.2, select.2: Add a reference to the sigset discussion in sigprocmask(2)

A little while back, I added a note to sigprocmask.2 that
discussed the difference between the libc's and the kernel's
sigset_t structures.  I added that note, because I saw this being
done wrong in a tool tracing system calls (causing subtle bugs).
As it turns out, the same bugs existed for ppoll and pselect, for
the same reason. I'm hoping by adding the reference here, future
writers of similar tools will find that discussion and not make
the same mistake.

Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
This commit is contained in:
Nicolas B 2016-12-27 14:32:29 -05:00 committed by Michael Kerrisk
parent 8e6578f85f
commit f25ea51b98
2 changed files with 11 additions and 5 deletions

View File

@ -416,7 +416,10 @@ The glibc
.BR ppoll ()
wrapper function specifies this argument as a fixed value
(equal to
.IR sizeof(sigset_t) ).
.IR sizeof(kernel_sigset_t) ). See
.BR sigprocmask(2)
for a discussion on the differences between the kernel and the libc
notion of the sigset.
.SH BUGS
See the discussion of spurious readiness notifications under the
BUGS section of

View File

@ -510,9 +510,9 @@ pointer, but is instead a structure of the form:
.nf
struct {
const sigset_t *ss; /* Pointer to signal set */
size_t ss_len; /* Size (in bytes) of object pointed
to by 'ss' */
const kernel_sigset_t *ss; /* Pointer to signal set */
size_t ss_len; /* Size (in bytes) of object pointed
to by 'ss' */
};
.fi
@ -520,7 +520,10 @@ struct {
This allows the system call to obtain both
a pointer to the signal set and its size,
while allowing for the fact that most architectures
support a maximum of 6 arguments to a system call.
support a maximum of 6 arguments to a system call. See
.BR sigprocmask(2)
for a discussion of the difference between the kernel and libc
notion of the signal set.
.SH BUGS
POSIX allows an implementation to define an upper limit,
advertised via the constant