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.


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