io\_uring\_wait\_cqes\_min\_timeout(3) liburing Manual io\_uring\_wait\_cqes\_min\_timeout(3)

# [NAME](#NAME)

io\_uring\_wait\_cqes\_min\_timeout - wait for completions with both batch and normal timeout

# [SYNOPSIS](#SYNOPSIS)

```
#include <liburing.h>
```

```
int io_uring_wait_cqes_min_timeout(struct io_uring *ring,
                                   struct io_uring_cqe **cqe_ptr,
                                   unsigned wait_nr,
                                   struct __kernel_timespec *ts,
                                   unsigned int min_wait_usec,
                                   sigset_t *sigmask);
```

# [DESCRIPTION](#DESCRIPTION)

The [**io\_uring\_wait\_cqes\_min\_timeout**(3)](/man/os/liburing/io_uring_wait_cqes_min_timeout.3) waits for completions from the submission queue belonging to the *ring* and waits for *wait\_nr* completion events, or until the timeout *ts* expires. The completion events are stored in the *cqe\_ptr* array. If non-zero, *min\_wait\_usec* denotes a timeout for the *wait\_nr* batch.

The *sigmask* specifies the set of signals to block. If set, it is equivalent to atomically executing the following calls:

```
sigset_t origmask;
pthread_sigmask(SIG_SETMASK, &sigmask, &origmask);
ret = io_uring_wait_cqes_min_timeout(ring, cqe, wait_nr, ts, min_wait, NULL);
pthread_sigmask(SIG_SETMASK, &origmask, NULL);
```

This works like [**io\_uring\_submit\_and\_wait\_min\_timeout**(3)](/man/os/liburing/io_uring_submit_and_wait_min_timeout.3) except that it doesn't submit requests. See that man page for a description for how the min timeout waiting works.

Available since 6.12.

# [RETURN VALUE](#RETURN_VALUE)

On success [**io\_uring\_wait\_cqes\_min\_timeout**(3)](/man/os/liburing/io_uring_wait_cqes_min_timeout.3) returns the 0.On failure it returns **-errno**. If the kernel doesn't support this functionality, **-EINVAL** will be returned. See note on the feature flag. The most common failure case is not receiving a completion within the specified timeout, **-ETIME** is returned in this case.

# [SEE ALSO](#SEE_ALSO)

[**io\_uring\_wait\_cqe**(3)](/man/os/liburing/io_uring_wait_cqe.3), [**io\_uring\_wait\_cqes**(3)](/man/os/liburing/io_uring_wait_cqes.3), [**io\_uring\_wait\_cqe\_timeout**(3)](/man/os/liburing/io_uring_wait_cqe_timeout.3), [**io\_uring\_wait\_cqes**(3)](/man/os/liburing/io_uring_wait_cqes.3), [**io\_uring\_submit\_and\_wait\_min\_timeout**(3)](/man/os/liburing/io_uring_submit_and_wait_min_timeout.3)

February 13, 2024 liburing-2.8

---

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