io_uring_buf_ring_add(3) — Linux manual page
io_uring_buf_ring_add(3) liburing Manual io_uring_buf_ring_add(3)
NAME
io_uring_buf_ring_add - add buffers to a shared buffer ring
SYNOPSIS
#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
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
None
NOTES
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
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
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 2024-06-14. (At that
time, the date of the most recent commit that was found in the
repository was 2024-06-03.) 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)