NAME |LIBRARY |SYNOPSIS |DESCRIPTION |RETURN VALUE |STANDARDS |HISTORY |SEE ALSO |COLOPHON | |
PR_FUTEX_HASH(2const)PR_FUTEX_HASH(2const)PR_FUTEX_HASH - configure the private futex hash
Standard C library (libc,-lc)
#include <linux/prctl.h>/* Definition ofPR_*constants */#include <sys/prctl.h>int prctl(PR_FUTEX_HASH, unsigned longop, ...);
Configure the attributes for the underlying hash used by thefutex(2) family of operations. The Linux kernel uses a hash to distribute the unrelatedfutex(2) requests to different data structures in order to reduce the lock contention. Unrelated requests are requests which are not related to one another because they use a different futex word. The data structure holds the in- kernel representation of the operation and keeps track of the current users which are enqueued and wait for a wake up. It also provides synchronisation of waiters against wakers. The size of the global hash is determined at boot time and is based on the number of CPUs in the system. Due to hash collision, two unrelatedfutex(2) requests can share the same hash bucket. This in turn can lead to delays of thefutex(2) operation due to lock contention while accessing the data structure. These delays can be problematic on a real-time system since random processes can share in-kernel locks and it is not deterministic which process will be involved. Linux 6.16 implements a process-wide private hash which is used by allfutex(2) operations that specify theFUTEX_PRIVATE_FLAGoption as part of the operation. Without any configuration the kernel will allocate 16 hash slots once the first thread has been created. If the process continues to create threads, the kernel will try to resize the private hash based on the number of threads and available CPUs in the system. The kernel will only increase the size and will make sure it does not exceed the size of the global hash. The user can configure the size of the private hash which will also disable the automatic resize provided by the kernel. The value inop is one of the options below.PR_FUTEX_HASH_GET_IMMUTABLEPR_FUTEX_HASH_GET_SLOTSPR_FUTEX_HASH_SET_SLOTS
On success, these calls return a nonnegative value. On error, -1 is returned, anderrno is set to indicate the error.
Linux.
Linux 6.16.
prctl(2),futex(2),PR_FUTEX_HASH_GET_IMMUTABLE(2const),PR_FUTEX_HASH_GET_SLOTS(2const),PR_FUTEX_HASH_SET_SLOTS(2const)
This page is part of theman-pages (Linux kernel and C library user-space interface documentation) project. Information about the project can be found at ⟨https://www.kernel.org/doc/man-pages/⟩. If you have a bug report for this manual page, see ⟨https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/CONTRIBUTING⟩. This page was obtained from the tarball man-pages-6.15.tar.gz fetched from ⟨https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/⟩ on 2025-08-11. If you discover any rendering problems in this HTML version of the page, or you believe there is a better or more up- to-date source for the page, or you have corrections or improvements to the information in this COLOPHON (which isnot part of the original manual page), send a mail to man-pages@man7.orgLinux man-pages 6.15 2025-06-11PR_FUTEX_HASH(2const)Pages that refer to this page:prctl(2)
HTML rendering created 2025-09-06 byMichael Kerrisk, author ofThe Linux Programming Interface. For details of in-depthLinux/UNIX system programming training courses that I teach, lookhere. Hosting byjambit GmbH. | ![]() |