io_uring_buf_ring_add(3) — Linux manual page

NAME | SYNOPSIS | DESCRIPTION | RETURN VALUE | NOTES | SEE ALSO | COLOPHON

io_uring_buf_ring_add(3)     liburing Manual     io_uring_buf_ring_add(3)

NAME         top

       io_uring_buf_ring_add - add buffers to a shared buffer ring

SYNOPSIS         top

       #include <liburing.h>

       void io_uring_buf_ring_add(struct io_uring_buf_ring *br,
                                  void *addr,
                                  unsigned int len,
                                  unsigned short bid,
                                  int mask,
                                  int buf_offset);

DESCRIPTION         top

       The io_uring_buf_ring_add(3) adds a new buffer to the shared
       buffer ring br.  The buffer address is indicated by addr and is of
       len bytes of length.  bid is the buffer ID, which will be returned
       in the CQE.  mask is the size mask of the ring, available from
       io_uring_buf_ring_mask(3).  buf_offset is the offset to insert at
       from the current tail. If just one buffer is provided before the
       ring tail is committed with io_uring_buf_ring_advance(3) or
       io_uring_buf_ring_cq_advance(3), then buf_offset should be 0. If
       buffers are provided in a loop before being committed, the
       buf_offset must be incremented by one for each buffer added.

RETURN VALUE         top

       None

NOTES         top

       liburing (or the kernel, for that matter) doesn't care about what
       buffer ID maps to what buffer, and in fact when recycling buffers
       after use, the application is free to add a different buffer into
       the same buffer ID location. All that matters is that the
       application knows what a given buffer ID in time corresponds to in
       terms of virtual memory. There's no liburing or kernel assumption
       that these mappings are persistent over time, they can very well
       be different every time a given buffer ID is added to the provided
       buffer ring.

SEE ALSO         top

       io_uring_register_buf_ring(3), io_uring_buf_ring_mask(3),
       io_uring_buf_ring_advance(3), io_uring_buf_ring_cq_advance(3)

COLOPHON         top

       This page is part of the liburing (A library for io_uring)
       project.  Information about the project can be found at 
       ⟨https://github.com/axboe/liburing⟩.  If you have a bug report for
       this manual page, send it to io-uring@vger.kernel.org.  This page
       was obtained from the project's upstream Git repository
       ⟨https://github.com/axboe/liburing⟩ on 2025-02-02.  (At that time,
       the date of the most recent commit that was found in the
       repository was 2025-01-22.)  If you discover any rendering
       problems in this HTML version of the page, or you believe there is
       a better or more up-to-date source for the page, or you have
       corrections or improvements to the information in this COLOPHON
       (which is not part of the original manual page), send a mail to
       man-pages@man7.org

liburing-2.2                   May 18, 2022      io_uring_buf_ring_add(3)

Pages that refer to this page: io_uring_buf_ring_add(3)io_uring_buf_ring_advance(3)io_uring_buf_ring_available(3)io_uring_buf_ring_cq_advance(3)__io_uring_buf_ring_cq_advance(3)io_uring_buf_ring_init(3)io_uring_buf_ring_mask(3)io_uring_prep_read_multishot(3)io_uring_prep_recv(3)io_uring_prep_recvmsg(3)io_uring_prep_recvmsg_multishot(3)io_uring_prep_recv_multishot(3)io_uring_prep_send(3)io_uring_prep_send_bundle(3)io_uring_prep_sendmsg(3)io_uring_prep_sendmsg_zc(3)io_uring_prep_sendto(3)io_uring_register_buf_ring(3)io_uring_setup_buf_ring(3)