axboe-liburing 2.15.2

Low-level io_uring interface, transliterated from Jens Axboe's liburing.
Documentation
Register buffers for fixed buffer operations

# DESCRIPTION

The [io_uring_register_buffers] function registers *nr_iovecs*
number of buffers defined by the array *iovecs* belonging to the *ring*.

The [io_uring_register_buffers_tags] function behaves the same as
[io_uring_register_buffers] function but additionally takes *tags*
parameter. See **IORING_REGISTER_BUFFERS2** for the resource tagging
description.

The [io_uring_register_buffers_sparse] 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].

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.

The [io_uring_register_buffers_update_tag] function updates
registered buffers with new ones, either turning a sparse entry into a
real one, or replacing an existing entry. The *off* is offset on which
to start the update *nr* number of buffers defined by the array *iovecs*
belonging to the *ring*. The *tags* points to an array of tags. See
**IORING_REGISTER_BUFFERS2** for the resource tagging description.

# RETURN VALUE

On success [io_uring_register_buffers],
[io_uring_register_buffers_tags] and
[io_uring_register_buffers_sparse] return 0.
[io_uring_register_buffers_update_tag] return number of buffers
updated. On failure they return **-errno**.

# SEE ALSO

[io_uring_register], [io_uring_get_sqe],
[io_uring_unregister_buffers], [io_uring_clone_buffers()],
[io_uring_register_buf_ring], [io_uring_prep_read_fixed],
[io_uring_prep_write_fixed]