Man page - io_uring_buf_ring_add(3)
Packages contains this manual
- io_uring_register_buffers_sparse(3)
- io_uring_register_napi(3)
- io_uring_prep_poll_multishot(3)
- io_uring_prep_multishot_accept_direct(3)
- io_uring_prep_multishot_accept(3)
- io_uring_clone_buffers(3)
- io_uring_buf_ring_available(3)
- io_uring_submit_and_wait_reg(3)
- io_uring_prep_futex_waitv(3)
- io_uring_prep_rename(3)
- io_uring_major_version(3)
- io_uring_prep_mkdir(3)
- io_uring_register_files_update(3)
- io_uring_sq_ready(3)
- io_uring_register_reg_wait(3)
- io_uring_prep_timeout(3)
- io_uring_register_iowq_aff(3)
- io_uring_submit(3)
- io_uring_unregister_napi(3)
- io_uring_prep_open_direct(3)
- io_uring_queue_init_params(3)
- io_uring_prep_openat2_direct(3)
- io_uring_buf_ring_advance(3)
- io_uring_unregister_eventfd(3)
- io_uring_submit_and_wait_min_timeout(3)
- io_uring_recvmsg_cmsg_nexthdr(3)
- io_uring_prep_renameat(3)
- io_uring_prep_recv(3)
- io_uring_prep_unlink(3)
- io_uring_prep_cancel(3)
- io_uring_prep_mkdirat(3)
- io_uring_prep_getxattr(3)
- io_uring_prep_close(3)
- io_uring_prep_send(3)
- io_uring_enable_rings(3)
- io_uring_register_clock(3)
- io_uring_minor_version(3)
- io_uring_prep_send_set_addr(3)
- io_uring_prep_sendmsg(3)
- io_uring_prep_fixed_fd_install(3)
- io_uring_queue_exit(3)
- io_uring_submit_and_wait_timeout(3)
- io_uring_for_each_cqe(3)
- io_uring_setup_reg_wait(3)
- io_uring_sqe_set_buf_group(3)
- io_uring_prep_sendmsg_zc(3)
- io_uring_prep_read_fixed(3)
- io_uring_submit_and_get_events(3)
- io_uring_unregister_buffers(3)
- io_uring_prep_symlink(3)
- io_uring_prep_send_zc_fixed(3)
- io_uring_prep_connect(3)
- io_uring_buf_ring_mask(3)
- io_uring_prep_cmd(3)
- io_uring_prep_sendto(3)
- io_uring_prep_write(3)
- io_uring_prep_files_update(3)
- io_uring_prep_setxattr(3)
- io_uring_peek_batch_cqe(3)
- io_uring_prep_msg_ring(3)
- io_uring_prep_cmd_discard(3)
- io_uring_prep_writev2(3)
- io_uring_register_sync_cancel(3)
- io_uring_prep_poll_add(3)
- io_uring_prep_close_direct(3)
- io_uring_prep_unlinkat(3)
- io_uring_recvmsg_validate(3)
- io_uring_prep_fgetxattr(3)
- io_uring_register_buf_ring(3)
- io_uring_unregister_files(3)
- io_uring_prep_splice(3)
- io_uring_register_buffers(3)
- io_uring_prep_ftruncate(3)
- io_uring_prep_recvmsg(3)
- io_uring_prep_poll_remove(3)
- io_uring_prep_link_timeout(3)
- io_uring_peek_cqe(3)
- io_uring_resize_rings(3)
- io_uring_prep_msg_ring_cqe_flags(3)
- io_uring_prep_statx(3)
- io_uring_free_reg_wait(3)
- io_uring_register(2)
- io_uring_cqe_seen(3)
- io_uring_prep_recv_multishot(3)
- io_uring_enter2(2)
- io_uring_prep_poll_update(3)
- io_uring_prep_readv2(3)
- io_uring_prep_writev(3)
- io_uring_unregister_iowq_aff(3)
- io_uring_get_sqe(3)
- io_uring_clone_buffers_offset(3)
- io_uring_prep_tee(3)
- io_uring_prep_bind(3)
- io_uring_prep_msg_ring_fd(3)
- io_uring_prep_openat_direct(3)
- io_uring(7)
- io_uring_wait_cqe_timeout(3)
- io_uring_prep_provide_buffers(3)
- io_uring_setup_buf_ring(3)
- io_uring_sqe_set_flags(3)
- io_uring_prep_futex_wake(3)
- io_uring_register_ring_fd(3)
- io_uring_submit_and_wait(3)
- io_uring_wait_cqes_min_timeout(3)
- io_uring_prep_sync_file_range(3)
- io_uring_wait_cqe_nr(3)
- io_uring_prep_send_zc(3)
- io_uring_cqe_get_data64(3)
- io_uring_cq_ready(3)
- io_uring_free_probe(3)
- io_uring_prep_accept_direct(3)
- io_uring_prep_fsetxattr(3)
- io_uring_enter(2)
- io_uring_queue_init(3)
- io_uring_register_files_tags(3)
- io_uring_prep_openat2(3)
- io_uring_get_events(3)
- io_uring_close_ring_fd(3)
- io_uring_register_file_alloc_range(3)
- io_uring_cq_has_overflow(3)
- io_uring_prep_symlinkat(3)
- io_uring_wait_cqes(3)
- io_uring_prep_fsync(3)
- io_uring_sqe_set_data(3)
- io_uring_wait_cqe(3)
- io_uring_opcode_supported(3)
- io_uring_prep_cancel_fd(3)
- io_uring_register_buffers_update_tag(3)
- io_uring_sq_space_left(3)
- io_uring_prep_read_multishot(3)
- io_uring_buf_ring_cq_advance(3)
- io_uring_prep_write_fixed(3)
- io_uring_prep_msg_ring_fd_alloc(3)
- io_uring_recvmsg_payload(3)
- io_uring_prep_remove_buffers(3)
- io_uring_prep_readv(3)
- io_uring_prep_nop(3)
- io_uring_prep_fallocate(3)
- io_uring_buf_ring_add(3)
- io_uring_prep_send_bundle(3)
- io_uring_sqe_set_data64(3)
- io_uring_unregister_buf_ring(3)
- io_uring_prep_linkat(3)
- io_uring_prep_fadvise64(3)
- io_uring_prep_fadvise(3)
- io_uring_prep_open(3)
- io_uring_cqe_get_data(3)
- io_uring_register_eventfd_async(3)
- io_uring_prep_read(3)
- io_uring_sqring_wait(3)
- __io_uring_buf_ring_cq_advance(3)
- io_uring_recvmsg_name(3)
- io_uring_prep_listen(3)
- io_uring_queue_init_mem(3)
- io_uring_register_eventfd(3)
- io_uring_recvmsg_payload_length(3)
- io_uring_prep_socket_direct_alloc(3)
- io_uring_get_probe(3)
- io_uring_register_files(3)
- io_uring_prep_link(3)
- io_uring_prep_waitid(3)
- io_uring_check_version(3)
- io_uring_cq_advance(3)
- io_uring_prep_madvise(3)
- io_uring_prep_accept(3)
- io_uring_register_files_sparse(3)
- io_uring_buf_ring_init(3)
- io_uring_prep_socket(3)
- io_uring_prep_shutdown(3)
- io_uring_recvmsg_out(3)
- io_uring_prep_timeout_remove(3)
- io_uring_prep_recvmsg_multishot(3)
- io_uring_unregister_ring_fd(3)
- io_uring_prep_openat(3)
- io_uring_free_buf_ring(3)
- io_uring_prep_timeout_update(3)
- io_uring_register_buffers_tags(3)
- io_uring_register_iowq_max_workers(3)
- io_uring_register_files_update_tag(3)
- io_uring_prep_futex_wait(3)
- io_uring_recvmsg_cmsg_firsthdr(3)
- io_uring_prep_madvise64(3)
- io_uring_prep_cancel64(3)
- io_uring_setup(2)
- io_uring_prep_socket_direct(3)
apt-get install liburing-dev
Manual
io_uring_buf_ring_add
NAMESYNOPSIS
DESCRIPTION
RETURN VALUE
NOTES
SEE ALSO
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)