From f25ea51b98b56d76bb14f9dac32d0d3a0155c2a8 Mon Sep 17 00:00:00 2001 From: Nicolas B Date: Tue, 27 Dec 2016 14:32:29 -0500 Subject: [PATCH] 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 --- man2/poll.2 | 5 ++++- man2/select.2 | 11 +++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/man2/poll.2 b/man2/poll.2 index 26bb10dd6..163df6e20 100644 --- a/man2/poll.2 +++ b/man2/poll.2 @@ -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 diff --git a/man2/select.2 b/man2/select.2 index 1a5d36a91..5b02fdaa6 100644 --- a/man2/select.2 +++ b/man2/select.2 @@ -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