signal.7: srcfix: note commit hash for futex() restart behavior change

Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
This commit is contained in:
Michael Kerrisk 2015-01-27 07:12:03 +01:00
parent f2aa4dcc8e
commit 4b139190f9
1 changed files with 23 additions and 30 deletions

View File

@ -646,25 +646,6 @@ calls on "slow" devices.
A "slow" device is one where the I/O call may block for an A "slow" device is one where the I/O call may block for an
indefinite time, for example, a terminal, pipe, or socket. indefinite time, for example, a terminal, pipe, or socket.
(A disk is not a slow device according to this definition.) (A disk is not a slow device according to this definition.)
A
.BR read (2)
on an
.BR eventfd (2),
.BR signalfd (2),
.BR timerfd (2),
.BR fanotify (7),
or
.BR inotify (7)
file descriptor is also considered to be a "slow" operation.
(Before Linux 3.8,
.\" commit 1ca39ab9d21ac93f94b9e3eb364ea9a5cf2aba06
reads from an
.BR inotify (7)
file descriptor were not restartable;
when interrupted by a signal handler,
.BR read (2)
always failed with the error
.BR EINTR .)
If an I/O call on a slow device has already transferred some If an I/O call on a slow device has already transferred some
data by the time it is interrupted by a signal handler, data by the time it is interrupted by a signal handler,
then the call will return a success status then the call will return a success status
@ -695,7 +676,7 @@ Socket interfaces:
.BR send (2), .BR send (2),
.BR sendto (2), .BR sendto (2),
and and
.\" FIXME . What about sendmmsg()? .\" FIXME What about sendmmsg()?
.BR sendmsg (2), .BR sendmsg (2),
unless a timeout has been set on the socket (see below). unless a timeout has been set on the socket (see below).
.IP * .IP *
@ -718,7 +699,9 @@ and
.IP * .IP *
.BR futex (2) .BR futex (2)
.B FUTEX_WAIT .B FUTEX_WAIT
(since Linux 2.6.22; beforehand, always failed with (since Linux 2.6.22;
.\" commit 72c1bbf308c75a136803d2d76d0e18258be14c7a
beforehand, always failed with
.BR EINTR ). .BR EINTR ).
.IP * .IP *
.BR getrandom (2). .BR getrandom (2).
@ -727,11 +710,16 @@ and
.BR pthread_cond_wait (3), .BR pthread_cond_wait (3),
and related APIs. and related APIs.
.IP * .IP *
.BR futex (2)
.BR FUTEX_WAIT_BITSET .
.IP *
POSIX semaphore interfaces: POSIX semaphore interfaces:
.BR sem_wait (3) .BR sem_wait (3)
and and
.BR sem_timedwait (3) .BR sem_timedwait (3)
(since Linux 2.6.22; beforehand, always failed with (since Linux 2.6.22;
.\" as a consequence of the 2.6.22 changes in the futex() implementation
beforehand, always failed with
.BR EINTR ). .BR EINTR ).
.RE .RE
.PP .PP
@ -761,14 +749,14 @@ and
.BR recvmsg (2). .BR recvmsg (2).
.IP * .IP *
"Output" socket interfaces, when a timeout "Output" socket interfaces, when a timeout
.RB ( SO_SNDTIMEO ) .RB ( SO_RCVTIMEO )
has been set on the socket using has been set on the socket using
.BR setsockopt (2): .BR setsockopt (2):
.BR connect (2), .BR connect (2),
.BR send (2), .BR send (2),
.BR sendto (2), .BR sendto (2),
and and
.\" FIXME . What about sendmmsg()? .\" FIXME What about sendmmsg()?
.BR sendmsg (2). .BR sendmsg (2).
.IP * .IP *
Interfaces used to wait for signals: Interfaces used to wait for signals:
@ -801,6 +789,11 @@ Sleep interfaces:
and and
.BR usleep (3). .BR usleep (3).
.IP * .IP *
.BR read (2)
from an
.BR inotify (7)
file descriptor.
.IP *
.BR io_getevents (2). .BR io_getevents (2).
.RE .RE
.PP .PP
@ -836,15 +829,18 @@ and
.BR recvmsg (2). .BR recvmsg (2).
.IP * .IP *
"Output" socket interfaces, when a timeout "Output" socket interfaces, when a timeout
.RB ( SO_SNDTIMEO ) .RB ( SO_RCVTIMEO )
has been set on the socket using has been set on the socket using
.BR setsockopt (2): .BR setsockopt (2):
.BR connect (2), .BR connect (2),
.BR send (2), .BR send (2),
.BR sendto (2), .BR sendto (2),
and and
.\" FIXME . What about sendmmsg()? .\" FIXME What about sendmmsg()?
.BR sendmsg (2). .BR sendmsg (2),
if a send timeout
.RB ( SO_SNDTIMEO )
has been set.
.IP * 2 .IP * 2
.BR epoll_wait (2), .BR epoll_wait (2),
.BR epoll_pwait (2). .BR epoll_pwait (2).
@ -855,8 +851,6 @@ and
.BR sigtimedwait (2), .BR sigtimedwait (2),
.BR sigwaitinfo (2). .BR sigwaitinfo (2).
.IP * .IP *
Linux 3.7 and earlier:
.\" commit 1ca39ab9d21ac93f94b9e3eb364ea9a5cf2aba06
.BR read (2) .BR read (2)
from an from an
.BR inotify (7) .BR inotify (7)
@ -903,7 +897,6 @@ POSIX.1, except as noted.
.BR signalfd (2), .BR signalfd (2),
.BR sigpending (2), .BR sigpending (2),
.BR sigprocmask (2), .BR sigprocmask (2),
.BR sigreturn (2),
.BR sigsuspend (2), .BR sigsuspend (2),
.BR sigwaitinfo (2), .BR sigwaitinfo (2),
.BR abort (3), .BR abort (3),