3#include <linux/errno.h>
6enum clod_futex_error clod_futex_wait(
const int *ptr,
const int expected, int64_t timeout_us) {
8 ts.tv_sec = timeout_us / 1000000;
9 ts.tv_nsec = (timeout_us - ts.tv_sec * 1000000) * 1000;
10 const long res = syscall(__NR_futex, (
long)ptr, __NR_futex_wait, expected, (
long)&ts);
21 const long res = syscall(__NR_futex, (
long)ptr, __NR_futex_wake, 1);
29 const long res = syscall(__NR_futex, (
long)ptr, __NR_futex_wake, (
long)INT_MAX);
@ CLOD_FUTEX_OK
No worries.
@ CLOD_FUTEX_INVALID
Invalid usage i.e. argument, pointer.
@ CLOD_FUTEX_INTERRUPT
The operation was interrupted by a signal.