io\_uring\_cq\_advance(3) liburing Manual io\_uring\_cq\_advance(3)

# [NAME](#NAME)

io\_uring\_cq\_advance - mark one or more io\_uring completion events as consumed

# [SYNOPSIS](#SYNOPSIS)

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

```
void io_uring_cq_advance(struct io_uring *ring,
                          unsigned nr);
```

# [DESCRIPTION](#DESCRIPTION)

The [**io\_uring\_cq\_advance**(3)](/man/os/liburing/io_uring_cq_advance.3) function marks *nr* IO completions belonging to the *ring* param as consumed.

After the caller has submitted a request with [**io\_uring\_submit**(3)](/man/os/liburing/io_uring_submit.3), the application can retrieve the completion with [**io\_uring\_wait\_cqe**(3)](/man/os/liburing/io_uring_wait_cqe.3), [**io\_uring\_peek\_cqe**(3)](/man/os/liburing/io_uring_peek_cqe.3), or any of the other CQE retrieval helpers, and mark it as consumed with [**io\_uring\_cqe\_seen**(3)](/man/os/liburing/io_uring_cqe_seen.3).

The function [**io\_uring\_cqe\_seen**(3)](/man/os/liburing/io_uring_cqe_seen.3) calls the function [**io\_uring\_cq\_advance**(3)](/man/os/liburing/io_uring_cq_advance.3).

Completions must be marked as seen, so their slot can get reused. Failure to do so will result in the same completion being returned on the next invocation.

# [RETURN VALUE](#RETURN_VALUE)

None

# [SEE ALSO](#SEE_ALSO)

[**io\_uring\_submit**(3)](/man/os/liburing/io_uring_submit.3), [**io\_uring\_wait\_cqe**(3)](/man/os/liburing/io_uring_wait_cqe.3), [**io\_uring\_peek\_cqe**(3)](/man/os/liburing/io_uring_peek_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\_cqe\_seen**(3)](/man/os/liburing/io_uring_cqe_seen.3)

January 25, 2022 liburing-2.1

---

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