xref: /aosp_15_r20/external/liburing/man/io_uring_register_buffers.3 (revision 25da2bea747f3a93b4c30fd9708b0618ef55a0e6)
Copyright (C) 2021 Stefan Roesch <[email protected]>

SPDX-License-Identifier: LGPL-2.0-or-later

io_uring_register_buffers 3 "November 15, 2021" "liburing-2.1" "liburing Manual"
NAME
io_uring_register_buffers - register buffers for fixed buffer operations
SYNOPSIS
 #include <liburing.h> 

"int io_uring_register_buffers(struct io_uring *" ring ", " const struct iovec *" iovecs ", " unsigned " nr_iovecs ");"

"int io_uring_register_buffers_sparse(struct io_uring *" ring ", " unsigned " nr_iovecs ");"

DESCRIPTION

The io_uring_register_buffers (3) function registers nr_iovecs number of buffers defined by the array iovecs belonging to the ring . The io_uring_register_buffers_sparse (3) function registers nr_iovecs empty buffers belonging to the ring . These buffers must be updated before use, using eg io_uring_register_buffers_update_tag (3). After the caller has registered the buffers, they can be used with one of the fixed buffers functions. Registered buffers is an optimization that is useful in conjunction with O_DIRECT reads and writes, where it maps the specified range into the kernel once when the buffer is registered rather than doing a map and unmap for each IO every time IO is performed to that region. Additionally, it also avoids manipulating the page reference counts for each IO.

RETURN VALUE
On success io_uring_register_buffers (3) and io_uring_register_buffers_sparse (3) return 0. On failure they return -errno .
SEE ALSO
io_uring_get_sqe (3), io_uring_unregister_buffers (3), io_uring_register_buf_ring (3), io_uring_prep_read_fixed (3), io_uring_prep_write_fixed (3)