summaryrefslogtreecommitdiff
path: root/man/io_uring_register_buffers.3
blob: 689de9d9f7d24515e55234aafcfe17a7d648fcc7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
.\" Copyright (C) 2021 Stefan Roesch <shr@fb.com>
.\"
.\" SPDX-License-Identifier: LGPL-2.0-or-later
.\"
.TH io_uring_register_buffers 3 "November 15, 2021" "liburing-2.1" "liburing Manual"
.SH NAME
io_uring_register_buffers - register buffers for fixed buffer operations
.fi
.SH SYNOPSIS
.nf
.BR "#include <liburing.h>"
.PP
.BI "int io_uring_register_buffers(struct io_uring *" ring ",
.BI "                              const struct iovec *" iovecs ",
.BI "                              unsigned " nr_iovecs ");"
.PP
.SH DESCRIPTION
.PP
The io_uring_register_buffers() function registers
.I nr_iovecs
number of buffers defined by the array
.I iovecs
belonging to the
.I ring.

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
.B O_DIRECT
reads and writes, where 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.

.SH RETURN VALUE
On success
.BR io_uring_register_buffers (3)
returns 0. On failure it returns -errno.
.SH SEE ALSO
.BR io_uring_get_sqe (3), io_uring_unregister_buffers (3), io_uring_prep_read_fixed (3), io_uring_prep_write_fixed (3)