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:
Alejandro Colomar 2021-08-08 10:41:17 +02:00 committed by Michael Kerrisk
parent e79977aeec
commit eeeee81162
1 changed files with 39 additions and 39 deletions

View File

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