From: "Michael Kerrisk (man-pages)" <mtk.manpages@gmail.com>
To: Alejandro Colomar <alx.manpages@gmail.com>
Cc: mtk.manpages@gmail.com, Kurt Kanzenbach <kurt@linutronix.de>,
linux-man@vger.kernel.org, Thomas Gleixner <tglx@linutronix.de>
Subject: Re: [PATCH 06/23] futex.2: Document FUTEX_LOCK_PI2
Date: Mon, 9 Aug 2021 02:06:11 +0200 [thread overview]
Message-ID: <8560b628-c57e-eff6-ee59-34ac12d2b74d@gmail.com> (raw)
In-Reply-To: <20210808084133.734274-7-alx.manpages@gmail.com>
hello Kurt and Alex,
On 8/8/21 10:41 AM, Alejandro Colomar wrote:
> From: Kurt Kanzenbach <kurt@linutronix.de>
>
> FUTEX_LOCK_PI2 is a new futex operation which was recently introduced into the
> Linux kernel. It works exactly like FUTEX_LOCK_PI. However, it has support for
> selectable clocks for timeouts. By default CLOCK_MONOTONIC is used. If
> FUTEX_CLOCK_REALTIME is specified then the timeout is measured against
> CLOCK_REALTIME.
>
> This new operation addresses an inconsistency in the futex interface:
> FUTEX_LOCK_PI only works with timeouts based on CLOCK_REALTIME in contrast to
> all the other PI operations.
>
> Document the FUTEX_LOCK_PI2 command.
>
> Signed-off-by: Kurt Kanzenbach <kurt@linutronix.de>
> Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
> Signed-off-by: Alejandro Colomar <alx.manpages@gmail.com>
Thanks. Patch applied.
But I have a note below.
> ---
> man2/futex.2 | 53 ++++++++++++++++++++++++++++++++++++++++++++++++----
> 1 file changed, 49 insertions(+), 4 deletions(-)
>
> diff --git a/man2/futex.2 b/man2/futex.2
> index ada96c517..2f340e0e0 100644
> --- a/man2/futex.2
> +++ b/man2/futex.2
> @@ -241,10 +241,13 @@ and so on.
> This option bit can be employed only with the
> .BR FUTEX_WAIT_BITSET ,
> .BR FUTEX_WAIT_REQUEUE_PI ,
> -and
> (since Linux 4.5)
> .\" commit 337f13046ff03717a9e99675284a817527440a49
> -.BR FUTEX_WAIT
> +.BR FUTEX_WAIT ,
> +and
> +(since Linux v5.14.0)
> +.\" commit bf22a6976897977b0a3f1aeba6823c959fc4fdae
> +.BR FUTEX_LOCK_PI2
> operations.
> .IP
> If this option is set, the kernel measures the
> @@ -904,7 +907,9 @@ value to 0 if the previous value was the expected TID.
> If a futex is already acquired (i.e., has a nonzero value),
> waiters must employ the
> .B FUTEX_LOCK_PI
> -operation to acquire the lock.
> +or
> +.B FUTEX_LOCK_PI2
> +operations to acquire the lock.
> If other threads are waiting for the lock, then the
> .B FUTEX_WAITERS
> bit is set in the futex value;
> @@ -964,6 +969,8 @@ 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
> and
> .B FUTEX_TRYLOCK_PI
> pair with
> @@ -1122,6 +1129,27 @@ arguments are ignored.
> .\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
> .\"
> .TP
> +.BR FUTEX_LOCK_PI2 " (since Linux 5.14.0)"
> +.\" commit bf22a6976897977b0a3f1aeba6823c959fc4fdae
> +This operation works similar like
> +.BR FUTEX_LOCK_PI .
> +The only difference is the
> +timeout argument.
> +.BR FUTEX_LOCK_PI2
> +has support for selectable clocks.
I think the page could help the reader by reminding them how the
clock is selected, as is done in the description of FUTEX_WAIT.
> +.IP
> +If
> +.I timeout
> +is not NULL, the structure it points to specifies
> +an absolute timeout.
> +If
> +.I timeout
> +is NULL, the operation can block indefinitely.
The above is the same as FUTEX_LOCK_PI, right? So, it
probably doesn't need repeating.
I've reworked this description to be:
FUTEX_LOCK_PI2 (since Linux 5.14)
This operation is the same as FUTEX_LOCK_PI, except that
the clock against which timeout is measured is selectable.
By default, the (absolute) timeout specified in timeout is
measured againt the CLOCK_MONOTONIC clock, but if the
FUTEX_CLOCK_REALTIME flag is specified in futex_op, then
the timeout is measured against the CLOCK_REALTIME clock.
Is it okay?
Thanks,
Michael
--
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Linux/UNIX System Programming Training: http://man7.org/training/
next prev parent reply other threads:[~2021-08-09 0:06 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-08 8:41 [PATCH 00/23] More patches from others Alejandro Colomar
2021-08-08 8:41 ` [PATCH 01/23] pipe.7: also mention writev(2) in atomicity section Alejandro Colomar
2021-08-08 13:20 ` Alejandro Colomar (man-pages)
2021-08-08 20:06 ` Michael Kerrisk (man-pages)
2021-08-08 8:41 ` [PATCH 02/23] sigaction.2: Document SA_EXPOSE_TAGBITS and the flag support detection protocol Alejandro Colomar
2021-08-09 0:29 ` Michael Kerrisk (man-pages)
2021-08-08 8:41 ` [PATCH 03/23] sigaction.2: Apply minor tweaks to Peter's patch Alejandro Colomar
2021-08-09 0:34 ` Michael Kerrisk (man-pages)
2021-08-09 6:36 ` Alejandro Colomar (man-pages)
2021-08-08 8:41 ` [PATCH 04/23] namespaces.7: ffix Alejandro Colomar
2021-08-08 20:08 ` Michael Kerrisk (man-pages)
2021-08-08 8:41 ` [PATCH 05/23] unix.7: tfix Alejandro Colomar
2021-08-08 20:23 ` Michael Kerrisk (man-pages)
2021-08-08 8:41 ` [PATCH 06/23] futex.2: Document FUTEX_LOCK_PI2 Alejandro Colomar
2021-08-09 0:06 ` Michael Kerrisk (man-pages) [this message]
2021-08-09 8:14 ` Kurt Kanzenbach
2021-08-09 9:01 ` Michael Kerrisk (man-pages)
2021-08-08 8:41 ` [PATCH 07/23] futex.2: Minor tweaks to Kurt's patch Alejandro Colomar
2021-08-09 0:05 ` Michael Kerrisk (man-pages)
2021-08-08 8:41 ` [PATCH 08/23] man2: new page describing memfd_secret() system call Alejandro Colomar
2021-08-09 2:00 ` Michael Kerrisk (man-pages)
2021-08-10 8:53 ` Mike Rapoport
2021-08-08 8:41 ` [PATCH 09/23] termios.3: Document missing baudrate constants Alejandro Colomar
2021-08-08 20:30 ` Michael Kerrisk (man-pages)
2021-08-08 8:41 ` [PATCH 10/23] getopt.3: Further clarification of optstring Alejandro Colomar
2021-08-08 22:11 ` Michael Kerrisk (man-pages)
2021-08-09 6:40 ` Alejandro Colomar (man-pages)
2021-08-08 8:41 ` [PATCH 11/23] getopt.3: Minor tweak to James's patch Alejandro Colomar
2021-08-08 22:12 ` Michael Kerrisk (man-pages)
2021-08-08 8:41 ` [PATCH 12/23] termios.3: Use bold style for Bnn and EXTn macro constants Alejandro Colomar
2021-08-08 20:31 ` Michael Kerrisk (man-pages)
2021-08-08 8:41 ` [PATCH 13/23] ioctl_tty.2: Document ioctls: TCGETS2, TCSETS2, TCSETSW2, TCSETSF2 Alejandro Colomar
2021-08-08 20:37 ` Michael Kerrisk (man-pages)
2021-08-08 20:56 ` Michael Kerrisk (man-pages)
2021-08-08 21:15 ` Pali Rohár
2021-08-08 21:30 ` Michael Kerrisk (man-pages)
2021-08-10 19:11 ` Pali Rohár
2021-08-10 20:40 ` Michael Kerrisk (man-pages)
2021-08-08 8:41 ` [PATCH 14/23] ioctl_tty.2: Update DTR example Alejandro Colomar
2021-08-08 20:12 ` Michael Kerrisk (man-pages)
2021-08-08 8:41 ` [PATCH 15/23] termios.3: Add information how to set baud rate to any other value Alejandro Colomar
2021-08-08 20:34 ` Michael Kerrisk (man-pages)
2021-08-08 8:41 ` [PATCH 16/23] man-pages.7: wfix Alejandro Colomar
2021-08-08 20:09 ` Michael Kerrisk (man-pages)
2021-10-17 19:42 ` Alejandro Colomar (man-pages)
2021-08-08 8:41 ` [PATCH 17/23] termios.3: ffix Alejandro Colomar
2021-08-08 20:35 ` Michael Kerrisk (man-pages)
2021-08-08 8:41 ` [PATCH 18/23] termios.3: SPARC architecture has 4 different Bnnn constants Alejandro Colomar
2021-08-08 20:36 ` Michael Kerrisk (man-pages)
2021-08-08 8:41 ` [PATCH 19/23] regex.3: wfix Alejandro Colomar
2021-08-08 20:11 ` Michael Kerrisk (man-pages)
2021-08-08 8:41 ` [PATCH 20/23] mount_setattr.2: New manual page documenting the mount_setattr() system call Alejandro Colomar
2021-08-10 1:34 ` Michael Kerrisk (man-pages)
2021-08-08 8:41 ` [PATCH 21/23] mount_setattr.2: Minor tweaks to Chirstian's patch Alejandro Colomar
2021-08-10 1:35 ` Michael Kerrisk (man-pages)
2021-08-08 8:41 ` [PATCH 22/23] ldd.1: Fix example command Alejandro Colomar
2021-08-08 22:32 ` Michael Kerrisk (man-pages)
2021-08-08 8:41 ` [PATCH 23/23] close_range.2: Glibc added a wrapper recently Alejandro Colomar
2021-08-08 20:58 ` Michael Kerrisk (man-pages)
2021-08-10 1:39 ` [PATCH 00/23] More patches from others Michael Kerrisk (man-pages)
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=8560b628-c57e-eff6-ee59-34ac12d2b74d@gmail.com \
--to=mtk.manpages@gmail.com \
--cc=alx.manpages@gmail.com \
--cc=kurt@linutronix.de \
--cc=linux-man@vger.kernel.org \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox