futex
Perform a futex operation
Declaration
Source position: linux.pp line 123
function futex(uaddr: pcint; op: cint; val: cint; timeout: ptimespec;
addr2: pcint; val3: cint) : cint;
function futex(var uaddr; op: cint; val: cint; timeout: ptimespec;
var addr2; val3: cint) : cint;
function futex(var uaddr; op: cint; val: cint; var timeout: TTimeSpec;
var addr2; val3: cint) : cint;
function futex(uaddr: pcint; op: cint; val: cint; timeout: ptimespec)
: cint;
function futex(var uaddr; op: cint; val: cint; timeout: ptimespec)
: cint;
function futex(var uaddr; op: cint; val: cint; var timeout: TTimeSpec)
: cint;
Description
futex performs an operation on a memory futex as described in the kernel manual page for futex. The mutex is located at uaddr, the operation op is one of the following constants:
- FUTEX_WAIT
- Futex option: Wait on futex till wake call arrives.
- FUTEX_WAKE
- Futex option: Wait on futex till wake call arrives.
- FUTEX_FD
- Futex option: Associate file descriptor with futex.
- FUTEX_REQUEUE
- Futex option: requeue waiting processes on other futex.
- FUTEX_CMP_REQUEUE
- Futex option: requeue waiting processes on other futex, but check it's value first
The value to check for is indicated in val, and a timeout can be specified in timeout. The optional arguments addr2 and val3 are used only with the FUTEX_REQUEUE and FUTEX_CMP_REQUEUE operations.
In case of an error, -1 is return. All other return values must be interpreted according to the operation performed.
This call directly interfaces with the Linux kernel, more information can be found in the kernel manual pages.
Errors
On error, -1 is returned. Use #rtl.baseunix.fpgeterrno to get the error code.