io_uring_prep_futex_wake(3) liburing Manual io_uring_prep_futex_wake(3)

io_uring_prep_futex_wake - prepare a futex wake request

#include <linux/futex.h>
#include <unistd.h>
#include <liburing.h>
void io_uring_prep_futex_wake(struct io_uring_sqe *sqe,
                              uint32_t *futex,
                              uint64_t val,
                              uint64_t mask,
                              uint32_t futex_flags,
                              unsigned int flags);

The io_uring_prep_futex_wake(3) function prepares a futex wake request. The submission queue entry sqe is setup for waking any waiters on the futex indicated by futex and at most val futexes. futex_flags indicates the futex2(2) modifier flags, and io_uring futex flags of flags .

If a given bitset for who to wake is desired, then that must be set in mask . Use FUTEX_BITSET_MATCH_ANY to match any waiter on the given futex.

flags are currently unused and hence 0 must be passed.

This function prepares an async futex(2) wake request. See that man page for details. Note that the io_uring futex wake request is similar to the FUTEX_WAKE_BITSET operation, as FUTEX_WAKE is a strict subset of that.

Available since kernel 6.7.

None

The CQE res field will contain the result of the operation. On success, the value will be the index into futexv which received a wakeup. See the related man page for details on possible values for errors. Note that where synchronous system calls will return -1 on failure and set errno to the actual error value, io_uring never uses errno. Instead it returns the negated errno directly in the CQE res field.

io_uring_get_sqe(3), io_uring_submit(3), io_uring_prep_futex_wait(3), io_uring_prep_futex_waitv(3), futex(2) futex2(2)

September 29, 2023 liburing-2.5