* [PATCH v5 1/3] man/man2const/PR_FUTEX_HASH.2const: Update as of Linux v6.17-rc2
2025-08-19 7:17 [PATCH v5 0/3] Add documentation for PR_FUTEX_HASH Sebastian Andrzej Siewior
@ 2025-08-19 7:17 ` Sebastian Andrzej Siewior
2025-08-19 11:03 ` Alejandro Colomar
2025-08-19 7:17 ` [PATCH v5 2/3] man/man2/prctl.2, PR_FUTEX_HASH_SET_SLOTS.2const: Document PR_FUTEX_HASH_SET_SLOTS Sebastian Andrzej Siewior
2025-08-19 7:17 ` [PATCH v5 3/3] man/man2/prctl.2, PR_FUTEX_HASH_GET_SLOTS.2const: Document PR_FUTEX_HASH_GET_SLOTS Sebastian Andrzej Siewior
2 siblings, 1 reply; 11+ messages in thread
From: Sebastian Andrzej Siewior @ 2025-08-19 7:17 UTC (permalink / raw)
To: linux-kernel, linux-man
Cc: Alejandro Colomar, André Almeida, Darren Hart,
Davidlohr Bueso, Ingo Molnar, Juri Lelli, Peter Zijlstra,
Thomas Gleixner, Valentin Schneider, Waiman Long,
Sebastian Andrzej Siewior
The PR_FUTEX_HASH prctl interface was updated shortly before the release
of v6.16. The changes are:
- the functionality was disabled in v6.16 and enabled v6.17-rc1 after
some updates the address performance concerns.
- the "IMMUTABLE" functionality was removed.
Update the page accordingly.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
man/man2const/PR_FUTEX_HASH.2const | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/man/man2const/PR_FUTEX_HASH.2const b/man/man2const/PR_FUTEX_HASH.2const
index b500c943bf2cb..bc05226cd1594 100644
--- a/man/man2const/PR_FUTEX_HASH.2const
+++ b/man/man2const/PR_FUTEX_HASH.2const
@@ -44,7 +44,7 @@ since random processes can
share in-kernel locks
and it is not deterministic which process will be involved.
.P
-Linux 6.16 implements a process-wide private hash which is used by all
+Linux 6.17 implements a process-wide private hash which is used by all
.BR futex (2)
operations that specify the
.B FUTEX_PRIVATE_FLAG
@@ -68,8 +68,6 @@ The value in
.I op
is one of the options below.
.TP
-.B PR_FUTEX_HASH_GET_IMMUTABLE
-.TQ
.B PR_FUTEX_HASH_GET_SLOTS
.TQ
.B PR_FUTEX_HASH_SET_SLOTS
@@ -82,10 +80,9 @@ is set to indicate the error.
.SH STANDARDS
Linux.
.SH HISTORY
-Linux 6.16.
+Linux 6.17.
.SH SEE ALSO
.BR prctl (2),
.BR futex (2),
-.BR PR_FUTEX_HASH_GET_IMMUTABLE (2const),
.BR PR_FUTEX_HASH_GET_SLOTS (2const),
.BR PR_FUTEX_HASH_SET_SLOTS (2const)
--
2.50.1
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v5 1/3] man/man2const/PR_FUTEX_HASH.2const: Update as of Linux v6.17-rc2
2025-08-19 7:17 ` [PATCH v5 1/3] man/man2const/PR_FUTEX_HASH.2const: Update as of Linux v6.17-rc2 Sebastian Andrzej Siewior
@ 2025-08-19 11:03 ` Alejandro Colomar
0 siblings, 0 replies; 11+ messages in thread
From: Alejandro Colomar @ 2025-08-19 11:03 UTC (permalink / raw)
To: Sebastian Andrzej Siewior
Cc: linux-kernel, linux-man, André Almeida, Darren Hart,
Davidlohr Bueso, Ingo Molnar, Juri Lelli, Peter Zijlstra,
Thomas Gleixner, Valentin Schneider, Waiman Long
[-- Attachment #1: Type: text/plain, Size: 1819 bytes --]
Hi Sebastian,
On Tue, Aug 19, 2025 at 09:17:26AM +0200, Sebastian Andrzej Siewior wrote:
> The PR_FUTEX_HASH prctl interface was updated shortly before the release
> of v6.16. The changes are:
> - the functionality was disabled in v6.16 and enabled v6.17-rc1 after
> some updates the address performance concerns.
> - the "IMMUTABLE" functionality was removed.
>
> Update the page accordingly.
>
> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Thanks! I've applied the patch.
Cheers,
Alex
> ---
> man/man2const/PR_FUTEX_HASH.2const | 7 ++-----
> 1 file changed, 2 insertions(+), 5 deletions(-)
>
> diff --git a/man/man2const/PR_FUTEX_HASH.2const b/man/man2const/PR_FUTEX_HASH.2const
> index b500c943bf2cb..bc05226cd1594 100644
> --- a/man/man2const/PR_FUTEX_HASH.2const
> +++ b/man/man2const/PR_FUTEX_HASH.2const
> @@ -44,7 +44,7 @@ since random processes can
> share in-kernel locks
> and it is not deterministic which process will be involved.
> .P
> -Linux 6.16 implements a process-wide private hash which is used by all
> +Linux 6.17 implements a process-wide private hash which is used by all
> .BR futex (2)
> operations that specify the
> .B FUTEX_PRIVATE_FLAG
> @@ -68,8 +68,6 @@ The value in
> .I op
> is one of the options below.
> .TP
> -.B PR_FUTEX_HASH_GET_IMMUTABLE
> -.TQ
> .B PR_FUTEX_HASH_GET_SLOTS
> .TQ
> .B PR_FUTEX_HASH_SET_SLOTS
> @@ -82,10 +80,9 @@ is set to indicate the error.
> .SH STANDARDS
> Linux.
> .SH HISTORY
> -Linux 6.16.
> +Linux 6.17.
> .SH SEE ALSO
> .BR prctl (2),
> .BR futex (2),
> -.BR PR_FUTEX_HASH_GET_IMMUTABLE (2const),
> .BR PR_FUTEX_HASH_GET_SLOTS (2const),
> .BR PR_FUTEX_HASH_SET_SLOTS (2const)
> --
> 2.50.1
>
--
<https://www.alejandro-colomar.es/>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v5 2/3] man/man2/prctl.2, PR_FUTEX_HASH_SET_SLOTS.2const: Document PR_FUTEX_HASH_SET_SLOTS
2025-08-19 7:17 [PATCH v5 0/3] Add documentation for PR_FUTEX_HASH Sebastian Andrzej Siewior
2025-08-19 7:17 ` [PATCH v5 1/3] man/man2const/PR_FUTEX_HASH.2const: Update as of Linux v6.17-rc2 Sebastian Andrzej Siewior
@ 2025-08-19 7:17 ` Sebastian Andrzej Siewior
2025-08-19 11:02 ` Alejandro Colomar
2025-08-19 7:17 ` [PATCH v5 3/3] man/man2/prctl.2, PR_FUTEX_HASH_GET_SLOTS.2const: Document PR_FUTEX_HASH_GET_SLOTS Sebastian Andrzej Siewior
2 siblings, 1 reply; 11+ messages in thread
From: Sebastian Andrzej Siewior @ 2025-08-19 7:17 UTC (permalink / raw)
To: linux-kernel, linux-man
Cc: Alejandro Colomar, André Almeida, Darren Hart,
Davidlohr Bueso, Ingo Molnar, Juri Lelli, Peter Zijlstra,
Thomas Gleixner, Valentin Schneider, Waiman Long,
Sebastian Andrzej Siewior
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
man/man2const/PR_FUTEX_HASH_SET_SLOTS.2const | 67 ++++++++++++++++++++
1 file changed, 67 insertions(+)
create mode 100644 man/man2const/PR_FUTEX_HASH_SET_SLOTS.2const
diff --git a/man/man2const/PR_FUTEX_HASH_SET_SLOTS.2const b/man/man2const/PR_FUTEX_HASH_SET_SLOTS.2const
new file mode 100644
index 0000000000000..93af27cbd5e5e
--- /dev/null
+++ b/man/man2const/PR_FUTEX_HASH_SET_SLOTS.2const
@@ -0,0 +1,67 @@
+.\" Copyright, the authors of the Linux man-pages project
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.TH PR_FUTEX_HASH_SET_SLOTS 2const (date) "Linux man-pages (unreleased)"
+.SH NAME
+PR_FUTEX_HASH_SET_SLOTS
+\-
+set the size of the private hash
+.SH LIBRARY
+Standard C library
+.RI ( libc ,\~ \-lc )
+.SH SYNOPSIS
+.nf
+.BR "#include <linux/prctl.h>" " /* Definition of " PR_* " constants */"
+.B #include <sys/prctl.h>
+.P
+.B int prctl(PR_FUTEX_HASH, PR_FUTEX_HASH_SET_SLOTS,
+.BI " unsigned long " hash_size ", unsigned long " hash_flags ");
+.fi
+.SH DESCRIPTION
+Set the number of slots to use for the private hash.
+.TP
+.I hash_size
+Specify the size of private hash to allocate.
+.RS
+.TP
+.I 0
+Use the global hash.
+This is the behaviour used before 6.17.
+.TP
+.I >0
+Specify the number of slots to allocate.
+The value must be power of two, and the lowest possible value is 2.
+The upper limit depends on the available memory in the system.
+Each slot requires 64 bytes of memory.
+Kernels compiled with
+.I CONFIG_PROVE_LOCKING
+will consume more than that.
+.RE
+.TP
+.I hash_flags
+.RS
+The argument must be 0.
+.SH RETURN VALUE
+On success,
+0 is returned.
+On error, \-1 is returned, and
+.I errno
+is set to indicate the error.
+.SH ERRORS
+.TP
+.B EINVAL
+An argument is invalid.
+.TP
+.B ENOMEM
+Failed to allocate memory.
+.TP
+.B EBUSY
+The global hash is in use and can not be changed.
+.SH STANDARDS
+Linux.
+.SH HISTORY
+Linux 6.17.
+.SH SEE ALSO
+.BR prctl (2),
+.BR PR_FUTEX_HASH (2const)
--
2.50.1
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v5 2/3] man/man2/prctl.2, PR_FUTEX_HASH_SET_SLOTS.2const: Document PR_FUTEX_HASH_SET_SLOTS
2025-08-19 7:17 ` [PATCH v5 2/3] man/man2/prctl.2, PR_FUTEX_HASH_SET_SLOTS.2const: Document PR_FUTEX_HASH_SET_SLOTS Sebastian Andrzej Siewior
@ 2025-08-19 11:02 ` Alejandro Colomar
2025-08-19 11:19 ` Alejandro Colomar
0 siblings, 1 reply; 11+ messages in thread
From: Alejandro Colomar @ 2025-08-19 11:02 UTC (permalink / raw)
To: Sebastian Andrzej Siewior
Cc: linux-kernel, linux-man, André Almeida, Darren Hart,
Davidlohr Bueso, Ingo Molnar, Juri Lelli, Peter Zijlstra,
Thomas Gleixner, Valentin Schneider, Waiman Long
[-- Attachment #1: Type: text/plain, Size: 2588 bytes --]
Hi Sebastian,
On Tue, Aug 19, 2025 at 09:17:27AM +0200, Sebastian Andrzej Siewior wrote:
> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
> ---
> man/man2const/PR_FUTEX_HASH_SET_SLOTS.2const | 67 ++++++++++++++++++++
> 1 file changed, 67 insertions(+)
> create mode 100644 man/man2const/PR_FUTEX_HASH_SET_SLOTS.2const
>
> diff --git a/man/man2const/PR_FUTEX_HASH_SET_SLOTS.2const b/man/man2const/PR_FUTEX_HASH_SET_SLOTS.2const
> new file mode 100644
> index 0000000000000..93af27cbd5e5e
> --- /dev/null
> +++ b/man/man2const/PR_FUTEX_HASH_SET_SLOTS.2const
> @@ -0,0 +1,67 @@
> +.\" Copyright, the authors of the Linux man-pages project
> +.\"
> +.\" SPDX-License-Identifier: Linux-man-pages-copyleft
> +.\"
> +.TH PR_FUTEX_HASH_SET_SLOTS 2const (date) "Linux man-pages (unreleased)"
> +.SH NAME
> +PR_FUTEX_HASH_SET_SLOTS
> +\-
> +set the size of the private hash
> +.SH LIBRARY
> +Standard C library
> +.RI ( libc ,\~ \-lc )
> +.SH SYNOPSIS
> +.nf
> +.BR "#include <linux/prctl.h>" " /* Definition of " PR_* " constants */"
> +.B #include <sys/prctl.h>
> +.P
> +.B int prctl(PR_FUTEX_HASH, PR_FUTEX_HASH_SET_SLOTS,
> +.BI " unsigned long " hash_size ", unsigned long " hash_flags ");
> +.fi
> +.SH DESCRIPTION
> +Set the number of slots to use for the private hash.
> +.TP
> +.I hash_size
> +Specify the size of private hash to allocate.
> +.RS
> +.TP
> +.I 0
> +Use the global hash.
> +This is the behaviour used before 6.17.
> +.TP
> +.I >0
> +Specify the number of slots to allocate.
Should we rename hash_size to just 'n' for simplicity? Or maybe size?
> +The value must be power of two, and the lowest possible value is 2.
> +The upper limit depends on the available memory in the system.
> +Each slot requires 64 bytes of memory.
> +Kernels compiled with
> +.I CONFIG_PROVE_LOCKING
> +will consume more than that.
> +.RE
> +.TP
> +.I hash_flags
And I guess this could be just flags, right?
Have a lovely day!
Alex
> +.RS
> +The argument must be 0.
> +.SH RETURN VALUE
> +On success,
> +0 is returned.
> +On error, \-1 is returned, and
> +.I errno
> +is set to indicate the error.
> +.SH ERRORS
> +.TP
> +.B EINVAL
> +An argument is invalid.
> +.TP
> +.B ENOMEM
> +Failed to allocate memory.
> +.TP
> +.B EBUSY
> +The global hash is in use and can not be changed.
> +.SH STANDARDS
> +Linux.
> +.SH HISTORY
> +Linux 6.17.
> +.SH SEE ALSO
> +.BR prctl (2),
> +.BR PR_FUTEX_HASH (2const)
> --
> 2.50.1
>
--
<https://www.alejandro-colomar.es/>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v5 2/3] man/man2/prctl.2, PR_FUTEX_HASH_SET_SLOTS.2const: Document PR_FUTEX_HASH_SET_SLOTS
2025-08-19 11:02 ` Alejandro Colomar
@ 2025-08-19 11:19 ` Alejandro Colomar
2025-08-21 14:08 ` Sebastian Andrzej Siewior
0 siblings, 1 reply; 11+ messages in thread
From: Alejandro Colomar @ 2025-08-19 11:19 UTC (permalink / raw)
To: Sebastian Andrzej Siewior
Cc: linux-kernel, linux-man, André Almeida, Darren Hart,
Davidlohr Bueso, Ingo Molnar, Juri Lelli, Peter Zijlstra,
Thomas Gleixner, Valentin Schneider, Waiman Long
[-- Attachment #1: Type: text/plain, Size: 1837 bytes --]
Hi Sebastian,
On Tue, Aug 19, 2025 at 01:02:42PM +0200, Alejandro Colomar wrote:
> On Tue, Aug 19, 2025 at 09:17:27AM +0200, Sebastian Andrzej Siewior wrote:
> > Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
> > ---
> > man/man2const/PR_FUTEX_HASH_SET_SLOTS.2const | 67 ++++++++++++++++++++
> > 1 file changed, 67 insertions(+)
> > create mode 100644 man/man2const/PR_FUTEX_HASH_SET_SLOTS.2const
> >
> > diff --git a/man/man2const/PR_FUTEX_HASH_SET_SLOTS.2const b/man/man2const/PR_FUTEX_HASH_SET_SLOTS.2const
> > new file mode 100644
> > index 0000000000000..93af27cbd5e5e
> > --- /dev/null
> > +++ b/man/man2const/PR_FUTEX_HASH_SET_SLOTS.2const
> > @@ -0,0 +1,67 @@
> > +.\" Copyright, the authors of the Linux man-pages project
> > +.\"
> > +.\" SPDX-License-Identifier: Linux-man-pages-copyleft
> > +.\"
> > +.TH PR_FUTEX_HASH_SET_SLOTS 2const (date) "Linux man-pages (unreleased)"
> > +.SH NAME
> > +PR_FUTEX_HASH_SET_SLOTS
> > +\-
> > +set the size of the private hash
> > +.SH LIBRARY
> > +Standard C library
> > +.RI ( libc ,\~ \-lc )
> > +.SH SYNOPSIS
> > +.nf
> > +.BR "#include <linux/prctl.h>" " /* Definition of " PR_* " constants */"
> > +.B #include <sys/prctl.h>
> > +.P
> > +.B int prctl(PR_FUTEX_HASH, PR_FUTEX_HASH_SET_SLOTS,
> > +.BI " unsigned long " hash_size ", unsigned long " hash_flags ");
I see that it is implemented in the kernel as
static int
futex_hash_allocate(unsigned int hash_slots, unsigned int flags)
{
...
}
But PR_FUTEX_HASH is implemented as
int
futex_hash_prctl(unsigned long arg2, unsigned long arg3,
unsigned long arg4)
{
...
}
Should we document is as a u_int, or a u_long? Is that mismatch a bug,
or is it on purpose?
Cheers,
Alex
--
<https://www.alejandro-colomar.es/>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 11+ messages in thread* Re: [PATCH v5 2/3] man/man2/prctl.2, PR_FUTEX_HASH_SET_SLOTS.2const: Document PR_FUTEX_HASH_SET_SLOTS
2025-08-19 11:19 ` Alejandro Colomar
@ 2025-08-21 14:08 ` Sebastian Andrzej Siewior
2025-08-21 19:14 ` Alejandro Colomar
0 siblings, 1 reply; 11+ messages in thread
From: Sebastian Andrzej Siewior @ 2025-08-21 14:08 UTC (permalink / raw)
To: Alejandro Colomar
Cc: linux-kernel, linux-man, André Almeida, Darren Hart,
Davidlohr Bueso, Ingo Molnar, Juri Lelli, Peter Zijlstra,
Thomas Gleixner, Valentin Schneider, Waiman Long
On 2025-08-19 13:19:15 [+0200], Alejandro Colomar wrote:
> Hi Sebastian,
Hi Alejandro,
> > > +.B int prctl(PR_FUTEX_HASH, PR_FUTEX_HASH_SET_SLOTS,
> > > +.BI " unsigned long " hash_size ", unsigned long " hash_flags ");
>
> I see that it is implemented in the kernel as
>
> static int
> futex_hash_allocate(unsigned int hash_slots, unsigned int flags)
> {
> ...
> }
>
> But PR_FUTEX_HASH is implemented as
>
> int
> futex_hash_prctl(unsigned long arg2, unsigned long arg3,
> unsigned long arg4)
> {
> ...
> }
>
> Should we document is as a u_int, or a u_long? Is that mismatch a bug,
> or is it on purpose?
The prctl() interface is long so I started with that. Internally we keep
it as an int since we don't need it that big and it avoids a hole
otherwise (but then there is a hole towards the end of the structure).
Realistically speaking 1 << 31 is the largest value that can be
specified (atm) and it will very likely lead to ENOMEM. If the user
tries the next higher value, 1 << 32, then the upper bits will be
truncated and the global hash will be requested and this will succeed.
The bug could be based on the argument type 1 << 32 will succeed but
it should not. Using 1 << 25 will request ~2GiB of memory and is a bit
far from sane.
I am bit forth and back between forcing an error for anything > 1 << 30,
or updating the docs to int. But this will be the easiest ;)
Any recommendations based on similar cases?
> Cheers,
> Alex
Sebastian
^ permalink raw reply [flat|nested] 11+ messages in thread* Re: [PATCH v5 2/3] man/man2/prctl.2, PR_FUTEX_HASH_SET_SLOTS.2const: Document PR_FUTEX_HASH_SET_SLOTS
2025-08-21 14:08 ` Sebastian Andrzej Siewior
@ 2025-08-21 19:14 ` Alejandro Colomar
2025-08-22 14:32 ` [PATCH v6] " Sebastian Andrzej Siewior
0 siblings, 1 reply; 11+ messages in thread
From: Alejandro Colomar @ 2025-08-21 19:14 UTC (permalink / raw)
To: Sebastian Andrzej Siewior
Cc: linux-kernel, linux-man, André Almeida, Darren Hart,
Davidlohr Bueso, Ingo Molnar, Juri Lelli, Peter Zijlstra,
Thomas Gleixner, Valentin Schneider, Waiman Long
[-- Attachment #1: Type: text/plain, Size: 2194 bytes --]
On Thu, Aug 21, 2025 at 04:08:51PM +0200, Sebastian Andrzej Siewior wrote:
> On 2025-08-19 13:19:15 [+0200], Alejandro Colomar wrote:
> > Hi Sebastian,
> Hi Alejandro,
Hi Sebastian,
> > > > +.B int prctl(PR_FUTEX_HASH, PR_FUTEX_HASH_SET_SLOTS,
> > > > +.BI " unsigned long " hash_size ", unsigned long " hash_flags ");
> >
> > I see that it is implemented in the kernel as
> >
> > static int
> > futex_hash_allocate(unsigned int hash_slots, unsigned int flags)
> > {
> > ...
> > }
> >
> > But PR_FUTEX_HASH is implemented as
> >
> > int
> > futex_hash_prctl(unsigned long arg2, unsigned long arg3,
> > unsigned long arg4)
> > {
> > ...
> > }
> >
> > Should we document is as a u_int, or a u_long? Is that mismatch a bug,
> > or is it on purpose?
>
> The prctl() interface is long so I started with that. Internally we keep
> it as an int since we don't need it that big and it avoids a hole
> otherwise (but then there is a hole towards the end of the structure).
> Realistically speaking 1 << 31 is the largest value that can be
> specified (atm) and it will very likely lead to ENOMEM. If the user
> tries the next higher value, 1 << 32, then the upper bits will be
> truncated and the global hash will be requested and this will succeed.
>
> The bug could be based on the argument type 1 << 32 will succeed but
> it should not. Using 1 << 25 will request ~2GiB of memory and is a bit
> far from sane.
> I am bit forth and back between forcing an error for anything > 1 << 30,
> or updating the docs to int. But this will be the easiest ;)
> Any recommendations based on similar cases?
I don't remember any similar cases atm.
I guess we should document it as long, because in ABIs where it matters,
users should pass a long. People should probably not be passing such
huge values, so we can leave it as an undocumented bug, which can be
fixed later if we ever find it to be important.
Changing the implementation from int to long if we ever need it should
be easy, as it doesn't break user space (it would rather fix it).
Have a lovely night!
Alex
--
<https://www.alejandro-colomar.es/>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 11+ messages in thread* [PATCH v6] man/man2/prctl.2, PR_FUTEX_HASH_SET_SLOTS.2const: Document PR_FUTEX_HASH_SET_SLOTS
2025-08-21 19:14 ` Alejandro Colomar
@ 2025-08-22 14:32 ` Sebastian Andrzej Siewior
0 siblings, 0 replies; 11+ messages in thread
From: Sebastian Andrzej Siewior @ 2025-08-22 14:32 UTC (permalink / raw)
To: Alejandro Colomar
Cc: linux-kernel, linux-man, André Almeida, Darren Hart,
Davidlohr Bueso, Ingo Molnar, Juri Lelli, Peter Zijlstra,
Thomas Gleixner, Valentin Schneider, Waiman Long
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
v5…v6:
- hash_size -> size
- hash_flags -> flags
man/man2const/PR_FUTEX_HASH_SET_SLOTS.2const | 67 ++++++++++++++++++++
1 file changed, 67 insertions(+)
create mode 100644 man/man2const/PR_FUTEX_HASH_SET_SLOTS.2const
diff --git a/man/man2const/PR_FUTEX_HASH_SET_SLOTS.2const b/man/man2const/PR_FUTEX_HASH_SET_SLOTS.2const
new file mode 100644
index 0000000000000..1605c18c6985b
--- /dev/null
+++ b/man/man2const/PR_FUTEX_HASH_SET_SLOTS.2const
@@ -0,0 +1,67 @@
+.\" Copyright, the authors of the Linux man-pages project
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.TH PR_FUTEX_HASH_SET_SLOTS 2const (date) "Linux man-pages (unreleased)"
+.SH NAME
+PR_FUTEX_HASH_SET_SLOTS
+\-
+set the size of the private hash
+.SH LIBRARY
+Standard C library
+.RI ( libc ,\~ \-lc )
+.SH SYNOPSIS
+.nf
+.BR "#include <linux/prctl.h>" " /* Definition of " PR_* " constants */"
+.B #include <sys/prctl.h>
+.P
+.B int prctl(PR_FUTEX_HASH, PR_FUTEX_HASH_SET_SLOTS,
+.BI " unsigned long " size ", unsigned long " flags ");
+.fi
+.SH DESCRIPTION
+Set the number of slots to use for the private hash.
+.TP
+.I size
+Specify the size of private hash to allocate.
+.RS
+.TP
+.I 0
+Use the global hash.
+This is the behaviour used before 6.17.
+.TP
+.I >0
+Specify the number of slots to allocate.
+The value must be power of two, and the lowest possible value is 2.
+The upper limit depends on the available memory in the system.
+Each slot requires 64 bytes of memory.
+Kernels compiled with
+.I CONFIG_PROVE_LOCKING
+will consume more than that.
+.RE
+.TP
+.I flags
+.RS
+The argument must be 0.
+.SH RETURN VALUE
+On success,
+0 is returned.
+On error, \-1 is returned, and
+.I errno
+is set to indicate the error.
+.SH ERRORS
+.TP
+.B EINVAL
+An argument is invalid.
+.TP
+.B ENOMEM
+Failed to allocate memory.
+.TP
+.B EBUSY
+The global hash is in use and can not be changed.
+.SH STANDARDS
+Linux.
+.SH HISTORY
+Linux 6.17.
+.SH SEE ALSO
+.BR prctl (2),
+.BR PR_FUTEX_HASH (2const)
--
2.50.1
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v5 3/3] man/man2/prctl.2, PR_FUTEX_HASH_GET_SLOTS.2const: Document PR_FUTEX_HASH_GET_SLOTS
2025-08-19 7:17 [PATCH v5 0/3] Add documentation for PR_FUTEX_HASH Sebastian Andrzej Siewior
2025-08-19 7:17 ` [PATCH v5 1/3] man/man2const/PR_FUTEX_HASH.2const: Update as of Linux v6.17-rc2 Sebastian Andrzej Siewior
2025-08-19 7:17 ` [PATCH v5 2/3] man/man2/prctl.2, PR_FUTEX_HASH_SET_SLOTS.2const: Document PR_FUTEX_HASH_SET_SLOTS Sebastian Andrzej Siewior
@ 2025-08-19 7:17 ` Sebastian Andrzej Siewior
2025-08-19 11:07 ` Alejandro Colomar
2 siblings, 1 reply; 11+ messages in thread
From: Sebastian Andrzej Siewior @ 2025-08-19 7:17 UTC (permalink / raw)
To: linux-kernel, linux-man
Cc: Alejandro Colomar, André Almeida, Darren Hart,
Davidlohr Bueso, Ingo Molnar, Juri Lelli, Peter Zijlstra,
Thomas Gleixner, Valentin Schneider, Waiman Long,
Sebastian Andrzej Siewior
Reviewed-by: Alejandro Colomar <alx@kernel.org>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
man/man2const/PR_FUTEX_HASH_GET_SLOTS.2const | 35 ++++++++++++++++++++
1 file changed, 35 insertions(+)
create mode 100644 man/man2const/PR_FUTEX_HASH_GET_SLOTS.2const
diff --git a/man/man2const/PR_FUTEX_HASH_GET_SLOTS.2const b/man/man2const/PR_FUTEX_HASH_GET_SLOTS.2const
new file mode 100644
index 0000000000000..dfeffa57930ab
--- /dev/null
+++ b/man/man2const/PR_FUTEX_HASH_GET_SLOTS.2const
@@ -0,0 +1,35 @@
+.\" Copyright, the authors of the Linux man-pages project
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.TH PR_FUTEX_HASH_GET_SLOTS 2const (date) "Linux man-pages (unreleased)"
+.SH NAME
+PR_FUTEX_HASH_GET_SLOTS
+\-
+return the size of the private hash
+.SH LIBRARY
+Standard C library
+.RI ( libc ,\~ \-lc )
+.SH SYNOPSIS
+.nf
+.BR "#include <linux/prctl.h>" " /* Definition of " PR_* " constants */"
+.B #include <sys/prctl.h>
+.P
+.B int prctl(PR_FUTEX_HASH, PR_FUTEX_HASH_GET_SLOTS);
+.fi
+.SH DESCRIPTION
+Return the current size of the private hash.
+.SH RETURN VALUE
+A value of 0 means that a private hash has not been allocated
+and the global hash is in use.
+A value >0 specifies the size of the private hash.
+On error, \-1 is returned, and
+.I errno
+is set to indicate the error.
+.SH STANDARDS
+Linux.
+.SH HISTORY
+Linux 6.17.
+.SH SEE ALSO
+.BR prctl (2),
+.BR PR_FUTEX_HASH (2const),
--
2.50.1
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v5 3/3] man/man2/prctl.2, PR_FUTEX_HASH_GET_SLOTS.2const: Document PR_FUTEX_HASH_GET_SLOTS
2025-08-19 7:17 ` [PATCH v5 3/3] man/man2/prctl.2, PR_FUTEX_HASH_GET_SLOTS.2const: Document PR_FUTEX_HASH_GET_SLOTS Sebastian Andrzej Siewior
@ 2025-08-19 11:07 ` Alejandro Colomar
0 siblings, 0 replies; 11+ messages in thread
From: Alejandro Colomar @ 2025-08-19 11:07 UTC (permalink / raw)
To: Sebastian Andrzej Siewior
Cc: linux-kernel, linux-man, André Almeida, Darren Hart,
Davidlohr Bueso, Ingo Molnar, Juri Lelli, Peter Zijlstra,
Thomas Gleixner, Valentin Schneider, Waiman Long
[-- Attachment #1: Type: text/plain, Size: 1827 bytes --]
Hi Sebastian,
On Tue, Aug 19, 2025 at 09:17:28AM +0200, Sebastian Andrzej Siewior wrote:
> Reviewed-by: Alejandro Colomar <alx@kernel.org>
> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Thanks! I've applied this patch.
Have a lovely day!
Alex
> ---
> man/man2const/PR_FUTEX_HASH_GET_SLOTS.2const | 35 ++++++++++++++++++++
> 1 file changed, 35 insertions(+)
> create mode 100644 man/man2const/PR_FUTEX_HASH_GET_SLOTS.2const
>
> diff --git a/man/man2const/PR_FUTEX_HASH_GET_SLOTS.2const b/man/man2const/PR_FUTEX_HASH_GET_SLOTS.2const
> new file mode 100644
> index 0000000000000..dfeffa57930ab
> --- /dev/null
> +++ b/man/man2const/PR_FUTEX_HASH_GET_SLOTS.2const
> @@ -0,0 +1,35 @@
> +.\" Copyright, the authors of the Linux man-pages project
> +.\"
> +.\" SPDX-License-Identifier: Linux-man-pages-copyleft
> +.\"
> +.TH PR_FUTEX_HASH_GET_SLOTS 2const (date) "Linux man-pages (unreleased)"
> +.SH NAME
> +PR_FUTEX_HASH_GET_SLOTS
> +\-
> +return the size of the private hash
> +.SH LIBRARY
> +Standard C library
> +.RI ( libc ,\~ \-lc )
> +.SH SYNOPSIS
> +.nf
> +.BR "#include <linux/prctl.h>" " /* Definition of " PR_* " constants */"
> +.B #include <sys/prctl.h>
> +.P
> +.B int prctl(PR_FUTEX_HASH, PR_FUTEX_HASH_GET_SLOTS);
> +.fi
> +.SH DESCRIPTION
> +Return the current size of the private hash.
> +.SH RETURN VALUE
> +A value of 0 means that a private hash has not been allocated
> +and the global hash is in use.
> +A value >0 specifies the size of the private hash.
> +On error, \-1 is returned, and
> +.I errno
> +is set to indicate the error.
> +.SH STANDARDS
> +Linux.
> +.SH HISTORY
> +Linux 6.17.
> +.SH SEE ALSO
> +.BR prctl (2),
> +.BR PR_FUTEX_HASH (2const),
> --
> 2.50.1
>
--
<https://www.alejandro-colomar.es/>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 11+ messages in thread