mirror of https://github.com/mkerrisk/man-pages
futex.2: Minor tweaks to Kurt's patch
Cc: Kurt Kanzenbach <kurt@linutronix.de> Signed-off-by: Alejandro Colomar <alx.manpages@gmail.com> Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
This commit is contained in:
parent
e79977aeec
commit
eeeee81162
78
man2/futex.2
78
man2/futex.2
|
@ -222,9 +222,9 @@ This allows the kernel to make some additional performance optimizations.
|
|||
.\" taking reference counts on file backing store, and so on.
|
||||
.IP
|
||||
As a convenience,
|
||||
.IR <linux/futex.h>
|
||||
.I <linux/futex.h>
|
||||
defines a set of constants with the suffix
|
||||
.BR _PRIVATE
|
||||
.B _PRIVATE
|
||||
that are equivalents of all of the operations listed below,
|
||||
.\" except the obsolete FUTEX_FD, for which the "private" flag was
|
||||
.\" meaningless
|
||||
|
@ -245,21 +245,21 @@ This option bit can be employed only with the
|
|||
.\" commit 337f13046ff03717a9e99675284a817527440a49
|
||||
.BR FUTEX_WAIT ,
|
||||
and
|
||||
(since Linux v5.14.0)
|
||||
(since Linux 5.14)
|
||||
.\" commit bf22a6976897977b0a3f1aeba6823c959fc4fdae
|
||||
.BR FUTEX_LOCK_PI2
|
||||
.B FUTEX_LOCK_PI2
|
||||
operations.
|
||||
.IP
|
||||
If this option is set, the kernel measures the
|
||||
.I timeout
|
||||
against the
|
||||
.BR CLOCK_REALTIME
|
||||
.B CLOCK_REALTIME
|
||||
clock.
|
||||
.IP
|
||||
If this option is not set, the kernel measures the
|
||||
.I timeout
|
||||
against the
|
||||
.BR CLOCK_MONOTONIC
|
||||
.B CLOCK_MONOTONIC
|
||||
clock.
|
||||
.PP
|
||||
The operation specified in
|
||||
|
@ -968,9 +968,8 @@ PI futexes are operated on by specifying one of the values listed below in
|
|||
Note that the PI futex operations must be used as paired operations
|
||||
and are subject to some additional requirements:
|
||||
.IP * 3
|
||||
.B FUTEX_LOCK_PI
|
||||
,
|
||||
.B FUTEX_LOCK_PI2
|
||||
.BR FUTEX_LOCK_PI ,
|
||||
.BR FUTEX_LOCK_PI2 ,
|
||||
and
|
||||
.B FUTEX_TRYLOCK_PI
|
||||
pair with
|
||||
|
@ -1123,19 +1122,20 @@ The
|
|||
.IR uaddr2 ,
|
||||
.IR val ,
|
||||
and
|
||||
.IR val3
|
||||
.I val3
|
||||
arguments are ignored.
|
||||
.\"
|
||||
.\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
.\"
|
||||
.TP
|
||||
.BR FUTEX_LOCK_PI2 " (since Linux 5.14.0)"
|
||||
.BR FUTEX_LOCK_PI2 " (since Linux 5.14)"
|
||||
.\" commit bf22a6976897977b0a3f1aeba6823c959fc4fdae
|
||||
This operation works similar like
|
||||
This operation works similar to
|
||||
.BR FUTEX_LOCK_PI .
|
||||
The only difference is the
|
||||
timeout argument.
|
||||
.BR FUTEX_LOCK_PI2
|
||||
.I timeout
|
||||
argument.
|
||||
.B FUTEX_LOCK_PI2
|
||||
has support for selectable clocks.
|
||||
.IP
|
||||
If
|
||||
|
@ -1466,7 +1466,7 @@ The value pointed to by
|
|||
is not equal to the expected value
|
||||
.IR val3 .
|
||||
.TP
|
||||
.BR EAGAIN
|
||||
.B EAGAIN
|
||||
.RB ( FUTEX_LOCK_PI ,
|
||||
.BR FUTEX_LOCK_PI2 ,
|
||||
.BR FUTEX_TRYLOCK_PI ,
|
||||
|
@ -1480,7 +1480,7 @@ is about to exit,
|
|||
but has not yet handled the internal state cleanup.
|
||||
Try again.
|
||||
.TP
|
||||
.BR EDEADLK
|
||||
.B EDEADLK
|
||||
.RB ( FUTEX_LOCK_PI ,
|
||||
.BR FUTEX_LOCK_PI2 ,
|
||||
.BR FUTEX_TRYLOCK_PI ,
|
||||
|
@ -1522,18 +1522,18 @@ a spurious wakeup; since Linux 2.6.22, this no longer happens.
|
|||
.TP
|
||||
.B EINVAL
|
||||
The operation in
|
||||
.IR futex_op
|
||||
.I futex_op
|
||||
is one of those that employs a timeout, but the supplied
|
||||
.I timeout
|
||||
argument was invalid
|
||||
.RI ( tv_sec
|
||||
was less than zero, or
|
||||
.IR tv_nsec
|
||||
.I tv_nsec
|
||||
was not less than 1,000,000,000).
|
||||
.TP
|
||||
.B EINVAL
|
||||
The operation specified in
|
||||
.IR futex_op
|
||||
.I futex_op
|
||||
employs one or both of the pointers
|
||||
.I uaddr
|
||||
and
|
||||
|
@ -1545,17 +1545,17 @@ the address is not four-byte-aligned.
|
|||
.RB ( FUTEX_WAIT_BITSET ,
|
||||
.BR FUTEX_WAKE_BITSET )
|
||||
The bit mask supplied in
|
||||
.IR val3
|
||||
.I val3
|
||||
is zero.
|
||||
.TP
|
||||
.B EINVAL
|
||||
.RB ( FUTEX_CMP_REQUEUE_PI )
|
||||
.I uaddr
|
||||
equals
|
||||
.IR uaddr2
|
||||
.I uaddr2
|
||||
(i.e., an attempt was made to requeue to the same futex).
|
||||
.TP
|
||||
.BR EINVAL
|
||||
.B EINVAL
|
||||
.RB ( FUTEX_FD )
|
||||
The signal number supplied in
|
||||
.I val
|
||||
|
@ -1570,9 +1570,9 @@ is invalid.
|
|||
The kernel detected an inconsistency between the user-space state at
|
||||
.I uaddr
|
||||
and the kernel state\(emthat is, it detected a waiter which waits in
|
||||
.BR FUTEX_LOCK_PI
|
||||
.B FUTEX_LOCK_PI
|
||||
or
|
||||
.BR FUTEX_LOCK_PI2
|
||||
.B FUTEX_LOCK_PI2
|
||||
on
|
||||
.IR uaddr .
|
||||
.TP
|
||||
|
@ -1588,7 +1588,7 @@ This indicates either state corruption
|
|||
or that the kernel found a waiter on
|
||||
.I uaddr
|
||||
which is waiting via
|
||||
.BR FUTEX_WAIT
|
||||
.B FUTEX_WAIT
|
||||
or
|
||||
.BR FUTEX_WAIT_BITSET .
|
||||
.TP
|
||||
|
@ -1601,9 +1601,9 @@ and the kernel state;
|
|||
.\" The kernel sees: I have non PI state for a futex you tried to
|
||||
.\" tell me was PI
|
||||
that is, the kernel detected a waiter which waits via
|
||||
.BR FUTEX_WAIT
|
||||
.B FUTEX_WAIT
|
||||
or
|
||||
.BR FUTEX_WAIT_BITSET
|
||||
.B FUTEX_WAIT_BITSET
|
||||
on
|
||||
.IR uaddr2 .
|
||||
.TP
|
||||
|
@ -1613,9 +1613,9 @@ The kernel detected an inconsistency between the user-space state at
|
|||
.I uaddr
|
||||
and the kernel state;
|
||||
that is, the kernel detected a waiter which waits via
|
||||
.BR FUTEX_WAIT
|
||||
.B FUTEX_WAIT
|
||||
or
|
||||
.BR FUTEX_WAIT_BITSET
|
||||
.B FUTEX_WAIT_BITSET
|
||||
on
|
||||
.IR uaddr .
|
||||
.TP
|
||||
|
@ -1627,9 +1627,9 @@ and the kernel state;
|
|||
that is, the kernel detected a waiter which waits on
|
||||
.I uaddr
|
||||
via
|
||||
.BR FUTEX_LOCK_PI
|
||||
.B FUTEX_LOCK_PI
|
||||
or
|
||||
.BR FUTEX_LOCK_PI2
|
||||
.B FUTEX_LOCK_PI2
|
||||
(instead of
|
||||
.BR FUTEX_WAIT_REQUEUE_PI ).
|
||||
.TP
|
||||
|
@ -1656,7 +1656,7 @@ Invalid argument.
|
|||
.RB ( FUTEX_FD )
|
||||
The system-wide limit on the total number of open files has been reached.
|
||||
.TP
|
||||
.BR ENOMEM
|
||||
.B ENOMEM
|
||||
.RB ( FUTEX_LOCK_PI ,
|
||||
.BR FUTEX_LOCK_PI2 ,
|
||||
.BR FUTEX_TRYLOCK_PI ,
|
||||
|
@ -1669,7 +1669,7 @@ Invalid operation specified in
|
|||
.TP
|
||||
.B ENOSYS
|
||||
The
|
||||
.BR FUTEX_CLOCK_REALTIME
|
||||
.B FUTEX_CLOCK_REALTIME
|
||||
option was specified in
|
||||
.IR futex_op ,
|
||||
but the accompanying operation was neither
|
||||
|
@ -1679,7 +1679,7 @@ but the accompanying operation was neither
|
|||
nor
|
||||
.BR FUTEX_LOCK_PI2 .
|
||||
.TP
|
||||
.BR ENOSYS
|
||||
.B ENOSYS
|
||||
.RB ( FUTEX_LOCK_PI ,
|
||||
.BR FUTEX_LOCK_PI2 ,
|
||||
.BR FUTEX_TRYLOCK_PI ,
|
||||
|
@ -1690,7 +1690,7 @@ A run-time check determined that the operation is not available.
|
|||
The PI-futex operations are not implemented on all architectures and
|
||||
are not supported on some CPU variants.
|
||||
.TP
|
||||
.BR EPERM
|
||||
.B EPERM
|
||||
.RB ( FUTEX_LOCK_PI ,
|
||||
.BR FUTEX_LOCK_PI2 ,
|
||||
.BR FUTEX_TRYLOCK_PI ,
|
||||
|
@ -1703,11 +1703,11 @@ the futex at
|
|||
.IR uaddr2 ).
|
||||
(This may be caused by a state corruption in user space.)
|
||||
.TP
|
||||
.BR EPERM
|
||||
.B EPERM
|
||||
.RB ( FUTEX_UNLOCK_PI )
|
||||
The caller does not own the lock represented by the futex word.
|
||||
.TP
|
||||
.BR ESRCH
|
||||
.B ESRCH
|
||||
.RB ( FUTEX_LOCK_PI ,
|
||||
.BR FUTEX_LOCK_PI2 ,
|
||||
.BR FUTEX_TRYLOCK_PI ,
|
||||
|
@ -1716,7 +1716,7 @@ The thread ID in the futex word at
|
|||
.I uaddr
|
||||
does not exist.
|
||||
.TP
|
||||
.BR ESRCH
|
||||
.B ESRCH
|
||||
.RB ( FUTEX_CMP_REQUEUE_PI )
|
||||
The thread ID in the futex word at
|
||||
.I uaddr2
|
||||
|
@ -1724,7 +1724,7 @@ does not exist.
|
|||
.TP
|
||||
.B ETIMEDOUT
|
||||
The operation in
|
||||
.IR futex_op
|
||||
.I futex_op
|
||||
employed the timeout specified in
|
||||
.IR timeout ,
|
||||
and the timeout expired before the operation completed.
|
||||
|
|
Loading…
Reference in New Issue