select.2: Update NOTES on old glibc pselect()

Make it clear that modern glibc uses the kernel pselect()
on systems where it is available.
See https://bugzilla.kernel.org/show_bug.cgi?id=14411

Reported-by: mac@mcrowe.com
Signed-off-by: Michael Kerrisk <mtk@konstanz.(none)>
This commit is contained in:
Michael Kerrisk 2010-08-31 06:59:47 +02:00
parent 6b2bd25649
commit 3fa2e4b9f5
1 changed files with 8 additions and 4 deletions

View File

@ -35,7 +35,7 @@
.\" 2005-03-11, mtk, modified pselect() text (it is now a system .\" 2005-03-11, mtk, modified pselect() text (it is now a system
.\" call in 2.6.16. .\" call in 2.6.16.
.\" .\"
.TH SELECT 2 2008-12-05 "Linux" "Linux Programmer's Manual" .TH SELECT 2 2010-08-31 "Linux" "Linux Programmer's Manual"
.SH NAME .SH NAME
select, pselect, FD_CLR, FD_ISSET, FD_SET, FD_ZERO \- select, pselect, FD_CLR, FD_ISSET, FD_SET, FD_ZERO \-
synchronous I/O multiplexing synchronous I/O multiplexing
@ -427,15 +427,19 @@ that did not take a
.I sigmask .I sigmask
argument. argument.
Since version 2.1, glibc has provided an emulation of Starting with version 2.1, glibc provided an emulation of
.BR pselect () .BR pselect ()
that is implemented using that was implemented using
.BR sigprocmask (2) .BR sigprocmask (2)
and and
.BR select (). .BR select ().
This implementation remains vulnerable to the very race condition that This implementation remained vulnerable to the very race condition that
.BR pselect () .BR pselect ()
was designed to prevent. was designed to prevent.
Modern versions of glibc use the (race-free)
.BR pselect ()
system call on kernels where it is provided.
On systems that lack On systems that lack
.BR pselect (), .BR pselect (),
reliable (and more portable) signal trapping can be achieved reliable (and more portable) signal trapping can be achieved