io\_uring\_prep\_futex\_waitv(3) liburing Manual io\_uring\_prep\_futex\_waitv(3)

# [NAME](#NAME)

io\_uring\_prep\_futex\_waitv - prepare a futex waitv request

# [SYNOPSIS](#SYNOPSIS)

```
#include <linux/futex.h>
#include <unistd.h>
#include <liburing.h>
```

```
void io_uring_prep_futex_waitv(struct io_uring_sqe *sqe,
                               const struct futex_waitv *futexv,
                               uint32_t nr_futex,
                               unsigned int flags);
```

# [DESCRIPTION](#DESCRIPTION)

The [**io\_uring\_prep\_futex\_waitv**(3)](/man/os/liburing/io_uring_prep_futex_waitv.3) function prepares a futex wait request for multiple futexes at the same time. The submission queue entry *sqe* is setup for waiting on all futexes given by *futexv* and *nr\_futex* is the number of futexes in that array. *flags* must be set to the io\_uring specific futex flags.

Unlike [**io\_uring\_prep\_futex\_wait**(3)](/man/os/liburing/io_uring_prep_futex_wait.3), the desired bitset mask and values are passed in *futexv*.

*flags* are currently unused and hence **0** must be passed.

This function prepares an async [**futex**(2)](/man/os/liburing/futex.2) waitv request. See that man page for details.

Available since kernel 6.7.

# [RETURN VALUE](#RETURN_VALUE)

None

# [ERRORS](#ERRORS)

The CQE *res* field will contain the result of the operation. See the related man page for details on possible values. 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.

# [NOTES](#NOTES)

Unlike the sync futex syscalls that wait on a futex, io\_uring does not support passing in a timeout for the request. Instead, applications are encouraged to use a linked timeout to abort the futex request at a given time, if desired.

# [SEE ALSO](#SEE_ALSO)

[**io\_uring\_get\_sqe**(3)](/man/os/liburing/io_uring_get_sqe.3), [**io\_uring\_submit**(3)](/man/os/liburing/io_uring_submit.3), [**io\_uring\_prep\_futex\_wait**(3)](/man/os/liburing/io_uring_prep_futex_wait.3), [**io\_uring\_prep\_futex\_wake**(3)](/man/os/liburing/io_uring_prep_futex_wake.3), [**io\_uring\_prep\_link\_timeout**(3)](/man/os/liburing/io_uring_prep_link_timeout.3), [**futex**(2)](/man/os/liburing/futex.2) [**futex2**(2)](/man/os/liburing/futex2.2)

September 29, 2023 liburing-2.5

---

Document: io_uring_prep_futex_waitv(3) from liburing 2.15-r5 (Chainguard OS)
Source: https://github.com/axboe/liburing.git
