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

# [NAME](#NAME)

io\_uring\_buf\_ring\_cq\_advance - advance index of provided buffer and CQ ring

# [SYNOPSIS](#SYNOPSIS)

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

```
void io_uring_buf_ring_cq_advance(struct io_uring *ring,
                                  struct io_uring_buf_ring *br,
                                  int count);
```

```
void __io_uring_buf_ring_cq_advance(struct io_uring *ring,
                                    struct io_uring_buf_ring *br,
                                    int cq_count,
                                    int buf_count);
```

# [DESCRIPTION](#DESCRIPTION)

The [**io\_uring\_buf\_ring\_cq\_advance**(3)](/man/os/liburing/io_uring_buf_ring_cq_advance.3) commits *count* previously added buffers to the shared buffer ring *br*, making them visible to the kernel and hence consumable. This passes ownership of the buffer to the ring. At the same time, it advances the CQ ring of *ring* by *count* amount. This effectively bundles both a [**io\_uring\_buf\_ring\_advance**(3)](/man/os/liburing/io_uring_buf_ring_advance.3) call and a [**io\_uring\_cq\_advance**(3)](/man/os/liburing/io_uring_cq_advance.3) into one operation. Since updating either ring index entails a store memory barrier, doing both at once is more efficient.

The [**\_\_io\_uring\_buf\_ring\_cq\_advance**(3)](/man/os/liburing/__io_uring_buf_ring_cq_advance.3) function performs the same operation, except it splits the counts into two separate values. It advances the CQ ring by *cq\_count* entries, and the buffer ring by *buf\_count* entries rather than increment both by the same value.

# [RETURN VALUE](#RETURN_VALUE)

None

# [SEE ALSO](#SEE_ALSO)

[**io\_uring\_register\_buf\_ring**(3)](/man/os/liburing/io_uring_register_buf_ring.3), [**io\_uring\_buf\_ring\_add**(3)](/man/os/liburing/io_uring_buf_ring_add.3), [**io\_uring\_buf\_ring\_advance**(3)](/man/os/liburing/io_uring_buf_ring_advance.3)

May 18, 2022 liburing-2.2

---

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