*** UNIX MANUAL PAGE BROWSER ***

A Nergahak database for man pages research.

Navigation

Directory Browser

1Browse 4.4BSD4.4BSD
1Browse Digital UNIXDigital UNIX 4.0e
1Browse FreeBSDFreeBSD 14.3
1Browse MINIXMINIX 3.4.0rc6-d5e4fc0
1Browse NetBSDNetBSD 10.1
1Browse OpenBSDOpenBSD 7.7
1Browse UNIX v7Version 7 UNIX
1Browse UNIX v10Version 10 UNIX

Manual Page Search

Manual Page Result

0 Command: futex | Section: 2 | Source: OpenBSD | File: futex.2
FUTEX(2) FreeBSD System Calls Manual FUTEX(2) NAME futex - fast userspace locking primitive SYNOPSIS #include <sys/time.h> #include <sys/futex.h> int futex(volatile uint32_t *uaddr, int op, int val, const struct timespec *timeout, volatile uint32_t *uaddr2); DESCRIPTION The futex() syscall provides sleep and wakeup primitives related to a particular address. Three op operations are currently supported: FUTEX_WAIT If val is equal to *uaddr, the calling thread is blocked on the "wait channel" identified by uaddr until timeout expires or until another thread issues a FUTEX_WAKE or FUTEX_REQUEUE operation with the same uaddr address. uaddr2 is ignored. FUTEX_WAKE Unblocks val threads sleeping on the wait channel identified by uaddr. timeout and uaddr2 are ignored. FUTEX_REQUEUE Similar to FUTEX_WAKE but also requeue remaining threads from the wait channel uaddr to uaddr2. In this case, pass uint32_t val2 as the fourth argument instead of timeout. At most that number of threads is requeued. RETURN VALUES For FUTEX_WAKE and FUTEX_REQUEUE, futex() returns the number of woken threads. For FUTEX_WAIT, futex() returns zero if woken by a matching FUTEX_WAKE or FUTEX_REQUEUE call. Otherwise, a value of -1 is returned and errno is set to indicate the error. ERRORS futex() will fail if: [ENOSYS] The op argument is invalid. [EFAULT] The userspace address uaddr is invalid. [EAGAIN] The value pointed to by uaddr is not the same as the expected value val. [EINVAL] The timeout specified a second value less than zero, or a nanosecond value less than zero or greater than or equal to 1000 million. [ETIMEDOUT] The timeout expired before the thread was woken up. [EINTR] A signal arrived. [ECANCELED] A signal arrived and SA_RESTART was set. SEE ALSO sigaction(2), pthread_cond_wait(3), pthread_mutex_lock(3), tsleep(9) Ulrich Drepper, Futexes Are Tricky, https://www.akkadia.org/drepper/futex.pdf, November 5, 2011. HISTORY The futex() syscall first appeared in Linux 2.5.7 and was added to OpenBSD 6.2. FreeBSD 14.1-RELEASE-p8 November 9, 2023 FreeBSD 14.1-RELEASE-p8

Navigation Options