@nxtedition/rocksdb 5.2.36 → 5.2.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/binding.cc +66 -91
- package/deps/liburing/liburing/COPYING +502 -0
- package/deps/liburing/liburing/COPYING.GPL +339 -0
- package/deps/liburing/liburing/LICENSE +7 -0
- package/deps/liburing/liburing/Makefile +84 -0
- package/deps/liburing/liburing/Makefile.quiet +11 -0
- package/deps/liburing/liburing/README +46 -0
- package/deps/liburing/liburing/configure +420 -0
- package/deps/liburing/liburing/debian/README.Debian +7 -0
- package/deps/liburing/liburing/debian/changelog +27 -0
- package/deps/liburing/liburing/debian/compat +1 -0
- package/deps/liburing/liburing/debian/control +48 -0
- package/deps/liburing/liburing/debian/copyright +49 -0
- package/deps/liburing/liburing/debian/liburing-dev.install +4 -0
- package/deps/liburing/liburing/debian/liburing-dev.manpages +6 -0
- package/deps/liburing/liburing/debian/liburing1-udeb.install +1 -0
- package/deps/liburing/liburing/debian/liburing1.install +1 -0
- package/deps/liburing/liburing/debian/liburing1.symbols +32 -0
- package/deps/liburing/liburing/debian/patches/series +1 -0
- package/deps/liburing/liburing/debian/rules +81 -0
- package/deps/liburing/liburing/debian/source/format +1 -0
- package/deps/liburing/liburing/debian/source/local-options +2 -0
- package/deps/liburing/liburing/debian/source/options +1 -0
- package/deps/liburing/liburing/debian/watch +3 -0
- package/deps/liburing/liburing/examples/Makefile +29 -0
- package/deps/liburing/liburing/examples/io_uring-cp.c +279 -0
- package/deps/liburing/liburing/examples/io_uring-test.c +112 -0
- package/deps/liburing/liburing/examples/link-cp.c +193 -0
- package/deps/liburing/liburing/examples/ucontext-cp.c +273 -0
- package/deps/liburing/liburing/liburing.pc.in +12 -0
- package/deps/liburing/liburing/liburing.spec +66 -0
- package/deps/liburing/liburing/make-debs.sh +53 -0
- package/deps/liburing/liburing/man/io_uring.7 +736 -0
- package/deps/liburing/liburing/man/io_uring_enter.2 +1403 -0
- package/deps/liburing/liburing/man/io_uring_get_sqe.3 +37 -0
- package/deps/liburing/liburing/man/io_uring_queue_exit.3 +27 -0
- package/deps/liburing/liburing/man/io_uring_queue_init.3 +44 -0
- package/deps/liburing/liburing/man/io_uring_register.2 +605 -0
- package/deps/liburing/liburing/man/io_uring_setup.2 +515 -0
- package/deps/liburing/liburing/src/Makefile +76 -0
- package/deps/liburing/liburing/src/include/liburing/barrier.h +73 -0
- package/deps/liburing/liburing/src/include/liburing/io_uring.h +422 -0
- package/deps/liburing/liburing/src/include/liburing.h +775 -0
- package/deps/liburing/liburing/src/liburing.map +46 -0
- package/deps/liburing/liburing/src/queue.c +403 -0
- package/deps/liburing/liburing/src/register.c +299 -0
- package/deps/liburing/liburing/src/setup.c +356 -0
- package/deps/liburing/liburing/src/syscall.c +73 -0
- package/deps/liburing/liburing/src/syscall.h +20 -0
- package/deps/liburing/liburing/test/232c93d07b74-test.c +305 -0
- package/deps/liburing/liburing/test/35fa71a030ca-test.c +329 -0
- package/deps/liburing/liburing/test/500f9fbadef8-test.c +89 -0
- package/deps/liburing/liburing/test/7ad0e4b2f83c-test.c +93 -0
- package/deps/liburing/liburing/test/8a9973408177-test.c +106 -0
- package/deps/liburing/liburing/test/917257daa0fe-test.c +53 -0
- package/deps/liburing/liburing/test/Makefile +312 -0
- package/deps/liburing/liburing/test/a0908ae19763-test.c +58 -0
- package/deps/liburing/liburing/test/a4c0b3decb33-test.c +180 -0
- package/deps/liburing/liburing/test/accept-link.c +251 -0
- package/deps/liburing/liburing/test/accept-reuse.c +164 -0
- package/deps/liburing/liburing/test/accept-test.c +79 -0
- package/deps/liburing/liburing/test/accept.c +476 -0
- package/deps/liburing/liburing/test/across-fork.c +283 -0
- package/deps/liburing/liburing/test/b19062a56726-test.c +53 -0
- package/deps/liburing/liburing/test/b5837bd5311d-test.c +77 -0
- package/deps/liburing/liburing/test/ce593a6c480a-test.c +135 -0
- package/deps/liburing/liburing/test/close-opath.c +122 -0
- package/deps/liburing/liburing/test/config +10 -0
- package/deps/liburing/liburing/test/connect.c +398 -0
- package/deps/liburing/liburing/test/cq-full.c +96 -0
- package/deps/liburing/liburing/test/cq-overflow.c +294 -0
- package/deps/liburing/liburing/test/cq-peek-batch.c +102 -0
- package/deps/liburing/liburing/test/cq-ready.c +94 -0
- package/deps/liburing/liburing/test/cq-size.c +58 -0
- package/deps/liburing/liburing/test/d4ae271dfaae-test.c +96 -0
- package/deps/liburing/liburing/test/d77a67ed5f27-test.c +65 -0
- package/deps/liburing/liburing/test/defer.c +307 -0
- package/deps/liburing/liburing/test/double-poll-crash.c +186 -0
- package/deps/liburing/liburing/test/eeed8b54e0df-test.c +114 -0
- package/deps/liburing/liburing/test/empty-eownerdead.c +42 -0
- package/deps/liburing/liburing/test/eventfd-disable.c +151 -0
- package/deps/liburing/liburing/test/eventfd-ring.c +97 -0
- package/deps/liburing/liburing/test/eventfd.c +112 -0
- package/deps/liburing/liburing/test/fadvise.c +202 -0
- package/deps/liburing/liburing/test/fallocate.c +249 -0
- package/deps/liburing/liburing/test/fc2a85cb02ef-test.c +138 -0
- package/deps/liburing/liburing/test/file-register.c +843 -0
- package/deps/liburing/liburing/test/file-update.c +173 -0
- package/deps/liburing/liburing/test/files-exit-hang-poll.c +128 -0
- package/deps/liburing/liburing/test/files-exit-hang-timeout.c +134 -0
- package/deps/liburing/liburing/test/fixed-link.c +90 -0
- package/deps/liburing/liburing/test/fsync.c +224 -0
- package/deps/liburing/liburing/test/hardlink.c +136 -0
- package/deps/liburing/liburing/test/helpers.c +135 -0
- package/deps/liburing/liburing/test/helpers.h +67 -0
- package/deps/liburing/liburing/test/io-cancel.c +537 -0
- package/deps/liburing/liburing/test/io_uring_enter.c +296 -0
- package/deps/liburing/liburing/test/io_uring_register.c +664 -0
- package/deps/liburing/liburing/test/io_uring_setup.c +192 -0
- package/deps/liburing/liburing/test/iopoll.c +366 -0
- package/deps/liburing/liburing/test/lfs-openat-write.c +117 -0
- package/deps/liburing/liburing/test/lfs-openat.c +273 -0
- package/deps/liburing/liburing/test/link-timeout.c +1107 -0
- package/deps/liburing/liburing/test/link.c +496 -0
- package/deps/liburing/liburing/test/link_drain.c +229 -0
- package/deps/liburing/liburing/test/madvise.c +195 -0
- package/deps/liburing/liburing/test/mkdir.c +108 -0
- package/deps/liburing/liburing/test/multicqes_drain.c +383 -0
- package/deps/liburing/liburing/test/nop-all-sizes.c +107 -0
- package/deps/liburing/liburing/test/nop.c +115 -0
- package/deps/liburing/liburing/test/open-close.c +146 -0
- package/deps/liburing/liburing/test/openat2.c +240 -0
- package/deps/liburing/liburing/test/personality.c +204 -0
- package/deps/liburing/liburing/test/pipe-eof.c +81 -0
- package/deps/liburing/liburing/test/pipe-reuse.c +105 -0
- package/deps/liburing/liburing/test/poll-cancel-ton.c +139 -0
- package/deps/liburing/liburing/test/poll-cancel.c +135 -0
- package/deps/liburing/liburing/test/poll-link.c +227 -0
- package/deps/liburing/liburing/test/poll-many.c +208 -0
- package/deps/liburing/liburing/test/poll-mshot-update.c +273 -0
- package/deps/liburing/liburing/test/poll-ring.c +48 -0
- package/deps/liburing/liburing/test/poll-v-poll.c +353 -0
- package/deps/liburing/liburing/test/poll.c +109 -0
- package/deps/liburing/liburing/test/probe.c +137 -0
- package/deps/liburing/liburing/test/read-write.c +876 -0
- package/deps/liburing/liburing/test/register-restrictions.c +633 -0
- package/deps/liburing/liburing/test/rename.c +134 -0
- package/deps/liburing/liburing/test/ring-leak.c +173 -0
- package/deps/liburing/liburing/test/ring-leak2.c +249 -0
- package/deps/liburing/liburing/test/rsrc_tags.c +449 -0
- package/deps/liburing/liburing/test/runtests-loop.sh +16 -0
- package/deps/liburing/liburing/test/runtests.sh +170 -0
- package/deps/liburing/liburing/test/rw_merge_test.c +97 -0
- package/deps/liburing/liburing/test/self.c +91 -0
- package/deps/liburing/liburing/test/send_recv.c +291 -0
- package/deps/liburing/liburing/test/send_recvmsg.c +345 -0
- package/deps/liburing/liburing/test/sendmsg_fs_cve.c +198 -0
- package/deps/liburing/liburing/test/shared-wq.c +84 -0
- package/deps/liburing/liburing/test/short-read.c +75 -0
- package/deps/liburing/liburing/test/shutdown.c +163 -0
- package/deps/liburing/liburing/test/sigfd-deadlock.c +74 -0
- package/deps/liburing/liburing/test/socket-rw-eagain.c +156 -0
- package/deps/liburing/liburing/test/socket-rw.c +147 -0
- package/deps/liburing/liburing/test/splice.c +511 -0
- package/deps/liburing/liburing/test/sq-full-cpp.cc +45 -0
- package/deps/liburing/liburing/test/sq-full.c +45 -0
- package/deps/liburing/liburing/test/sq-poll-dup.c +200 -0
- package/deps/liburing/liburing/test/sq-poll-kthread.c +168 -0
- package/deps/liburing/liburing/test/sq-poll-share.c +137 -0
- package/deps/liburing/liburing/test/sq-space_left.c +159 -0
- package/deps/liburing/liburing/test/sqpoll-cancel-hang.c +159 -0
- package/deps/liburing/liburing/test/sqpoll-disable-exit.c +195 -0
- package/deps/liburing/liburing/test/sqpoll-exit-hang.c +77 -0
- package/deps/liburing/liburing/test/sqpoll-sleep.c +68 -0
- package/deps/liburing/liburing/test/statx.c +172 -0
- package/deps/liburing/liburing/test/stdout.c +232 -0
- package/deps/liburing/liburing/test/submit-link-fail.c +154 -0
- package/deps/liburing/liburing/test/submit-reuse.c +239 -0
- package/deps/liburing/liburing/test/symlink.c +116 -0
- package/deps/liburing/liburing/test/teardowns.c +58 -0
- package/deps/liburing/liburing/test/thread-exit.c +131 -0
- package/deps/liburing/liburing/test/timeout-new.c +246 -0
- package/deps/liburing/liburing/test/timeout-overflow.c +204 -0
- package/deps/liburing/liburing/test/timeout.c +1354 -0
- package/deps/liburing/liburing/test/unlink.c +111 -0
- package/deps/liburing/liburing/test/wakeup-hang.c +162 -0
- package/deps/liburing/liburing.gyp +20 -0
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +62 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +7 -62
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +25 -11
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +74 -155
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +1 -2
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +2 -2
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +13 -0
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +4 -2
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +22 -4
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +5 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +15 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +5 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +1 -1
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +3 -0
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +3 -7
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +44 -29
- package/deps/rocksdb/rocksdb.gyp +4 -3
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/darwin-x64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
- package/prebuilds/prebuilds/linux-x64/node.napi.node +0 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
.\" Copyright (C) 2020 Jens Axboe <axboe@kernel.dk>
|
|
2
|
+
.\" Copyright (C) 2020 Red Hat, Inc.
|
|
3
|
+
.\"
|
|
4
|
+
.\" SPDX-License-Identifier: LGPL-2.0-or-later
|
|
5
|
+
.\"
|
|
6
|
+
.TH io_uring_get_sqe 3 "July 10, 2020" "liburing-0.7" "liburing Manual"
|
|
7
|
+
.SH NAME
|
|
8
|
+
io_uring_get_sqe - get the next vacant event from the submission queue
|
|
9
|
+
.SH SYNOPSIS
|
|
10
|
+
.nf
|
|
11
|
+
.BR "#include <liburing.h>"
|
|
12
|
+
.PP
|
|
13
|
+
.BI "struct io_uring_sqe *io_uring_get_sqe(struct io_uring " *ring );
|
|
14
|
+
.fi
|
|
15
|
+
.PP
|
|
16
|
+
.SH DESCRIPTION
|
|
17
|
+
.PP
|
|
18
|
+
The io_uring_get_sqe() function gets the next vacant event from the submission
|
|
19
|
+
queue belonging to the
|
|
20
|
+
.I ring
|
|
21
|
+
param.
|
|
22
|
+
|
|
23
|
+
On success io_uring_get_sqe() returns a pointer to the submission queue event.
|
|
24
|
+
On failure NULL is returned.
|
|
25
|
+
|
|
26
|
+
If a submission queue event is returned, it should be filled out via one of the
|
|
27
|
+
prep functions such as
|
|
28
|
+
.BR io_uring_prep_read (3)
|
|
29
|
+
and submitted via
|
|
30
|
+
.BR io_uring_submit (3).
|
|
31
|
+
|
|
32
|
+
.SH RETURN VALUE
|
|
33
|
+
.BR io_uring_get_sqe (3)
|
|
34
|
+
returns a pointer to the next submission queue event on success and NULL on
|
|
35
|
+
failure.
|
|
36
|
+
.SH SEE ALSO
|
|
37
|
+
.BR io_uring_submit (3)
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
.\" Copyright (C) 2020 Jens Axboe <axboe@kernel.dk>
|
|
2
|
+
.\" Copyright (C) 2020 Red Hat, Inc.
|
|
3
|
+
.\"
|
|
4
|
+
.\" SPDX-License-Identifier: LGPL-2.0-or-later
|
|
5
|
+
.\"
|
|
6
|
+
.TH io_uring_queue_exit 3 "July 10, 2020" "liburing-0.7" "liburing Manual"
|
|
7
|
+
.SH NAME
|
|
8
|
+
io_uring_queue_exit - tear down io_uring submission and completion queues
|
|
9
|
+
.SH SYNOPSIS
|
|
10
|
+
.nf
|
|
11
|
+
.BR "#include <liburing.h>"
|
|
12
|
+
.PP
|
|
13
|
+
.BI "void io_uring_queue_exit(struct io_uring * ring );"
|
|
14
|
+
.fi
|
|
15
|
+
.PP
|
|
16
|
+
.SH DESCRIPTION
|
|
17
|
+
.PP
|
|
18
|
+
.BR io_uring_queue_exit (3)
|
|
19
|
+
will release all resources acquired and initialized by
|
|
20
|
+
.BR io_uring_queue_init (3).
|
|
21
|
+
It first unmaps the memory shared between the application and the kernel and then closes the io_uring file descriptor.
|
|
22
|
+
.SH RETURN VALUE
|
|
23
|
+
None
|
|
24
|
+
.SH SEE ALSO
|
|
25
|
+
.BR io_uring_setup (2),
|
|
26
|
+
.BR mmap (2),
|
|
27
|
+
.BR io_uring_queue_init (3)
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
.\" Copyright (C) 2020 Jens Axboe <axboe@kernel.dk>
|
|
2
|
+
.\" Copyright (C) 2020 Red Hat, Inc.
|
|
3
|
+
.\"
|
|
4
|
+
.\" SPDX-License-Identifier: LGPL-2.0-or-later
|
|
5
|
+
.\"
|
|
6
|
+
.TH io_uring_queue_init 3 "July 10, 2020" "liburing-0.7" "liburing Manual"
|
|
7
|
+
.SH NAME
|
|
8
|
+
io_uring_queue_init - setup io_uring submission and completion queues
|
|
9
|
+
.SH SYNOPSIS
|
|
10
|
+
.nf
|
|
11
|
+
.BR "#include <liburing.h>"
|
|
12
|
+
.PP
|
|
13
|
+
.BI "int io_uring_queue_init(unsigned " entries ", struct io_uring *" ring ,
|
|
14
|
+
.BI " unsigned " flags );
|
|
15
|
+
.fi
|
|
16
|
+
.PP
|
|
17
|
+
.SH DESCRIPTION
|
|
18
|
+
.PP
|
|
19
|
+
The io_uring_queue_init() function executes the io_uring_setup syscall to
|
|
20
|
+
initialize the submission and completion queues in the kernel with at least
|
|
21
|
+
.I entries
|
|
22
|
+
entries and then maps the resulting file descriptor to memory shared between the
|
|
23
|
+
application and the kernel.
|
|
24
|
+
|
|
25
|
+
On success io_uring_queue_init() returns 0 and
|
|
26
|
+
.I ring
|
|
27
|
+
will point to the shared memory containing the io_uring queues. On failure
|
|
28
|
+
-errno is returned.
|
|
29
|
+
|
|
30
|
+
.I flags
|
|
31
|
+
will be passed through to the io_uring_setup syscall (see
|
|
32
|
+
.BR io_uring_setup (2)).
|
|
33
|
+
|
|
34
|
+
On success, the resources held by
|
|
35
|
+
.I ring
|
|
36
|
+
should be released via a corresponding call to
|
|
37
|
+
.BR io_uring_queue_exit (3).
|
|
38
|
+
.SH RETURN VALUE
|
|
39
|
+
.BR io_uring_queue_init (3)
|
|
40
|
+
returns 0 on success and -errno on failure.
|
|
41
|
+
.SH SEE ALSO
|
|
42
|
+
.BR io_uring_setup (2),
|
|
43
|
+
.BR mmap (2),
|
|
44
|
+
.BR io_uring_queue_exit (3)
|
|
@@ -0,0 +1,605 @@
|
|
|
1
|
+
.\" Copyright (C) 2019 Jens Axboe <axboe@kernel.dk>
|
|
2
|
+
.\" Copyright (C) 2019 Red Hat, Inc.
|
|
3
|
+
.\"
|
|
4
|
+
.\" SPDX-License-Identifier: LGPL-2.0-or-later
|
|
5
|
+
.\"
|
|
6
|
+
.TH IO_URING_REGISTER 2 2019-01-17 "Linux" "Linux Programmer's Manual"
|
|
7
|
+
.SH NAME
|
|
8
|
+
io_uring_register \- register files or user buffers for asynchronous I/O
|
|
9
|
+
.SH SYNOPSIS
|
|
10
|
+
.nf
|
|
11
|
+
.BR "#include <linux/io_uring.h>"
|
|
12
|
+
.PP
|
|
13
|
+
.BI "int io_uring_register(unsigned int " fd ", unsigned int " opcode ,
|
|
14
|
+
.BI " void *" arg ", unsigned int " nr_args );
|
|
15
|
+
.fi
|
|
16
|
+
.PP
|
|
17
|
+
.SH DESCRIPTION
|
|
18
|
+
.PP
|
|
19
|
+
|
|
20
|
+
The
|
|
21
|
+
.BR io_uring_register ()
|
|
22
|
+
system call registers resources (e.g. user buffers, files, eventfd,
|
|
23
|
+
personality, restrictions) for use in an
|
|
24
|
+
.BR io_uring (7)
|
|
25
|
+
instance referenced by
|
|
26
|
+
.IR fd .
|
|
27
|
+
Registering files or user buffers allows the kernel to take long term
|
|
28
|
+
references to internal data structures or create long term mappings of
|
|
29
|
+
application memory, greatly reducing per-I/O overhead.
|
|
30
|
+
|
|
31
|
+
.I fd
|
|
32
|
+
is the file descriptor returned by a call to
|
|
33
|
+
.BR io_uring_setup (2).
|
|
34
|
+
.I opcode
|
|
35
|
+
can be one of:
|
|
36
|
+
|
|
37
|
+
.TP
|
|
38
|
+
.B IORING_REGISTER_BUFFERS
|
|
39
|
+
.I arg
|
|
40
|
+
points to a
|
|
41
|
+
.I struct iovec
|
|
42
|
+
array of
|
|
43
|
+
.I nr_args
|
|
44
|
+
entries. The buffers associated with the iovecs will be locked in
|
|
45
|
+
memory and charged against the user's
|
|
46
|
+
.B RLIMIT_MEMLOCK
|
|
47
|
+
resource limit. See
|
|
48
|
+
.BR getrlimit (2)
|
|
49
|
+
for more information. Additionally, there is a size limit of 1GiB per
|
|
50
|
+
buffer. Currently, the buffers must be anonymous, non-file-backed
|
|
51
|
+
memory, such as that returned by
|
|
52
|
+
.BR malloc (3)
|
|
53
|
+
or
|
|
54
|
+
.BR mmap (2)
|
|
55
|
+
with the
|
|
56
|
+
.B MAP_ANONYMOUS
|
|
57
|
+
flag set. It is expected that this limitation will be lifted in the
|
|
58
|
+
future. Huge pages are supported as well. Note that the entire huge
|
|
59
|
+
page will be pinned in the kernel, even if only a portion of it is
|
|
60
|
+
used.
|
|
61
|
+
|
|
62
|
+
After a successful call, the supplied buffers are mapped into the
|
|
63
|
+
kernel and eligible for I/O. To make use of them, the application
|
|
64
|
+
must specify the
|
|
65
|
+
.B IORING_OP_READ_FIXED
|
|
66
|
+
or
|
|
67
|
+
.B IORING_OP_WRITE_FIXED
|
|
68
|
+
opcodes in the submission queue entry (see the
|
|
69
|
+
.I struct io_uring_sqe
|
|
70
|
+
definition in
|
|
71
|
+
.BR io_uring_enter (2)),
|
|
72
|
+
and set the
|
|
73
|
+
.I buf_index
|
|
74
|
+
field to the desired buffer index. The memory range described by the
|
|
75
|
+
submission queue entry's
|
|
76
|
+
.I addr
|
|
77
|
+
and
|
|
78
|
+
.I len
|
|
79
|
+
fields must fall within the indexed buffer.
|
|
80
|
+
|
|
81
|
+
It is perfectly valid to setup a large buffer and then only use part
|
|
82
|
+
of it for an I/O, as long as the range is within the originally mapped
|
|
83
|
+
region.
|
|
84
|
+
|
|
85
|
+
An application can increase or decrease the size or number of
|
|
86
|
+
registered buffers by first unregistering the existing buffers, and
|
|
87
|
+
then issuing a new call to
|
|
88
|
+
.BR io_uring_register ()
|
|
89
|
+
with the new buffers.
|
|
90
|
+
|
|
91
|
+
Note that before 5.13 registering buffers would wait for the ring to idle.
|
|
92
|
+
If the application currently has requests in-flight, the registration will
|
|
93
|
+
wait for those to finish before proceeding.
|
|
94
|
+
|
|
95
|
+
An application need not unregister buffers explicitly before shutting
|
|
96
|
+
down the io_uring instance. Available since 5.1.
|
|
97
|
+
|
|
98
|
+
.TP
|
|
99
|
+
.B IORING_REGISTER_BUFFERS2
|
|
100
|
+
Register buffers for I/O. Similar to
|
|
101
|
+
.B IORING_REGISTER_BUFFERS
|
|
102
|
+
but aims to have a more extensible ABI.
|
|
103
|
+
|
|
104
|
+
.I arg
|
|
105
|
+
points to a
|
|
106
|
+
.I struct io_uring_rsrc_register,
|
|
107
|
+
and
|
|
108
|
+
.I nr_args
|
|
109
|
+
should be set to the number of bytes in the structure.
|
|
110
|
+
|
|
111
|
+
.PP
|
|
112
|
+
.in +8n
|
|
113
|
+
.EX
|
|
114
|
+
struct io_uring_rsrc_register {
|
|
115
|
+
__u32 nr;
|
|
116
|
+
__u32 resv;
|
|
117
|
+
__u64 resv2;
|
|
118
|
+
__aligned_u64 data;
|
|
119
|
+
__aligned_u64 tags;
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
.EE
|
|
123
|
+
.in
|
|
124
|
+
.PP
|
|
125
|
+
|
|
126
|
+
.in +8n
|
|
127
|
+
|
|
128
|
+
The
|
|
129
|
+
.I data
|
|
130
|
+
field contains a pointer to a
|
|
131
|
+
.I struct iovec
|
|
132
|
+
array of
|
|
133
|
+
.I nr
|
|
134
|
+
entries.
|
|
135
|
+
The
|
|
136
|
+
.I tags
|
|
137
|
+
field should either be 0, then tagging is disabled, or point to an array
|
|
138
|
+
of
|
|
139
|
+
.I nr
|
|
140
|
+
"tags" (unsigned 64 bit integers). If a tag is zero, then tagging for this
|
|
141
|
+
particular resource (a buffer in this case) is disabled. Otherwise, after the
|
|
142
|
+
resource had been unregistered and it's not used anymore, a CQE will be
|
|
143
|
+
posted with
|
|
144
|
+
.I user_data
|
|
145
|
+
set to the specified tag and all other fields zeroed.
|
|
146
|
+
|
|
147
|
+
Note that resource updates, e.g.
|
|
148
|
+
.B IORING_REGISTER_BUFFERS_UPDATE,
|
|
149
|
+
don't necessarily deallocate resources by the time it returns, but they might
|
|
150
|
+
be held alive until all requests using it complete.
|
|
151
|
+
|
|
152
|
+
Available since 5.13.
|
|
153
|
+
|
|
154
|
+
.TP
|
|
155
|
+
.B IORING_REGISTER_BUFFERS_UPDATE
|
|
156
|
+
Updates registered buffers with new ones, either turning a sparse entry into
|
|
157
|
+
a real one, or replacing an existing entry.
|
|
158
|
+
|
|
159
|
+
.I arg
|
|
160
|
+
must contain a pointer to a struct io_uring_rsrc_update2, which contains
|
|
161
|
+
an offset on which to start the update, and an array of
|
|
162
|
+
.I struct iovec.
|
|
163
|
+
.I tags
|
|
164
|
+
points to an array of tags.
|
|
165
|
+
.I nr
|
|
166
|
+
must contain the number of descriptors in the passed in arrays.
|
|
167
|
+
See
|
|
168
|
+
.B IORING_REGISTER_BUFFERS2
|
|
169
|
+
for the resource tagging description.
|
|
170
|
+
|
|
171
|
+
.PP
|
|
172
|
+
.in +8n
|
|
173
|
+
.EX
|
|
174
|
+
|
|
175
|
+
struct io_uring_rsrc_update2 {
|
|
176
|
+
__u32 offset;
|
|
177
|
+
__u32 resv;
|
|
178
|
+
__aligned_u64 data;
|
|
179
|
+
__aligned_u64 tags;
|
|
180
|
+
__u32 nr;
|
|
181
|
+
__u32 resv2;
|
|
182
|
+
};
|
|
183
|
+
.EE
|
|
184
|
+
.in
|
|
185
|
+
.PP
|
|
186
|
+
|
|
187
|
+
.in +8n
|
|
188
|
+
|
|
189
|
+
Available since 5.13.
|
|
190
|
+
|
|
191
|
+
.TP
|
|
192
|
+
.B IORING_UNREGISTER_BUFFERS
|
|
193
|
+
This operation takes no argument, and
|
|
194
|
+
.I arg
|
|
195
|
+
must be passed as NULL. All previously registered buffers associated
|
|
196
|
+
with the io_uring instance will be released. Available since 5.1.
|
|
197
|
+
|
|
198
|
+
.TP
|
|
199
|
+
.B IORING_REGISTER_FILES
|
|
200
|
+
Register files for I/O.
|
|
201
|
+
.I arg
|
|
202
|
+
contains a pointer to an array of
|
|
203
|
+
.I nr_args
|
|
204
|
+
file descriptors (signed 32 bit integers).
|
|
205
|
+
|
|
206
|
+
To make use of the registered files, the
|
|
207
|
+
.B IOSQE_FIXED_FILE
|
|
208
|
+
flag must be set in the
|
|
209
|
+
.I flags
|
|
210
|
+
member of the
|
|
211
|
+
.IR "struct io_uring_sqe" ,
|
|
212
|
+
and the
|
|
213
|
+
.I fd
|
|
214
|
+
member is set to the index of the file in the file descriptor array.
|
|
215
|
+
|
|
216
|
+
The file set may be sparse, meaning that the
|
|
217
|
+
.B fd
|
|
218
|
+
field in the array may be set to
|
|
219
|
+
.B -1.
|
|
220
|
+
See
|
|
221
|
+
.B IORING_REGISTER_FILES_UPDATE
|
|
222
|
+
for how to update files in place.
|
|
223
|
+
|
|
224
|
+
Note that before 5.13 registering files would wait for the ring to idle.
|
|
225
|
+
If the application currently has requests in-flight, the registration will
|
|
226
|
+
wait for those to finish before proceeding. See
|
|
227
|
+
.B IORING_REGISTER_FILES_UPDATE
|
|
228
|
+
for how to update an existing set without that limitation.
|
|
229
|
+
|
|
230
|
+
Files are automatically unregistered when the io_uring instance is
|
|
231
|
+
torn down. An application needs only unregister if it wishes to
|
|
232
|
+
register a new set of fds. Available since 5.1.
|
|
233
|
+
|
|
234
|
+
.TP
|
|
235
|
+
.B IORING_REGISTER_FILES2
|
|
236
|
+
Register files for I/O. Similar to
|
|
237
|
+
.B IORING_REGISTER_FILES.
|
|
238
|
+
|
|
239
|
+
.I arg
|
|
240
|
+
points to a
|
|
241
|
+
.I struct io_uring_rsrc_register,
|
|
242
|
+
and
|
|
243
|
+
.I nr_args
|
|
244
|
+
should be set to the number of bytes in the structure.
|
|
245
|
+
|
|
246
|
+
The
|
|
247
|
+
.I data
|
|
248
|
+
field contains a pointer to an array of
|
|
249
|
+
.I nr
|
|
250
|
+
file descriptors (signed 32 bit integers).
|
|
251
|
+
.I tags
|
|
252
|
+
field should either be 0 or or point to an array of
|
|
253
|
+
.I nr
|
|
254
|
+
"tags" (unsigned 64 bit integers). See
|
|
255
|
+
.B IORING_REGISTER_BUFFERS2
|
|
256
|
+
for more info on resource tagging.
|
|
257
|
+
|
|
258
|
+
Note that resource updates, e.g.
|
|
259
|
+
.B IORING_REGISTER_FILES_UPDATE,
|
|
260
|
+
don't necessarily deallocate resources, they might be held until all requests
|
|
261
|
+
using that resource complete.
|
|
262
|
+
|
|
263
|
+
Available since 5.13.
|
|
264
|
+
|
|
265
|
+
.TP
|
|
266
|
+
.B IORING_REGISTER_FILES_UPDATE
|
|
267
|
+
This operation replaces existing files in the registered file set with new
|
|
268
|
+
ones, either turning a sparse entry (one where fd is equal to -1) into a
|
|
269
|
+
real one, removing an existing entry (new one is set to -1), or replacing
|
|
270
|
+
an existing entry with a new existing entry.
|
|
271
|
+
|
|
272
|
+
.I arg
|
|
273
|
+
must contain a pointer to a
|
|
274
|
+
.I struct io_uring_files_update,
|
|
275
|
+
which contains
|
|
276
|
+
an offset on which to start the update, and an array of file descriptors to
|
|
277
|
+
use for the update.
|
|
278
|
+
.I nr_args
|
|
279
|
+
must contain the number of descriptors in the passed in array. Available
|
|
280
|
+
since 5.5.
|
|
281
|
+
|
|
282
|
+
File descriptors can be skipped if they are set to
|
|
283
|
+
.B IORING_REGISTER_FILES_SKIP.
|
|
284
|
+
Skipping an fd will not touch the file associated with the previous
|
|
285
|
+
fd at that index. Available since 5.12.
|
|
286
|
+
|
|
287
|
+
.TP
|
|
288
|
+
.B IORING_REGISTER_FILES_UPDATE2
|
|
289
|
+
Similar to IORING_REGISTER_FILES_UPDATE, replaces existing files in the
|
|
290
|
+
registered file set with new ones, either turning a sparse entry (one where
|
|
291
|
+
fd is equal to -1) into a real one, removing an existing entry (new one is
|
|
292
|
+
set to -1), or replacing an existing entry with a new existing entry.
|
|
293
|
+
|
|
294
|
+
.I arg
|
|
295
|
+
must contain a pointer to a
|
|
296
|
+
.I struct io_uring_rsrc_update2,
|
|
297
|
+
which contains
|
|
298
|
+
an offset on which to start the update, and an array of file descriptors to
|
|
299
|
+
use for the update stored in
|
|
300
|
+
.I data.
|
|
301
|
+
.I tags
|
|
302
|
+
points to an array of tags.
|
|
303
|
+
.I nr
|
|
304
|
+
must contain the number of descriptors in the passed in arrays.
|
|
305
|
+
See
|
|
306
|
+
.B IORING_REGISTER_BUFFERS2
|
|
307
|
+
for the resource tagging description.
|
|
308
|
+
|
|
309
|
+
Available since 5.13.
|
|
310
|
+
|
|
311
|
+
.TP
|
|
312
|
+
.B IORING_UNREGISTER_FILES
|
|
313
|
+
This operation requires no argument, and
|
|
314
|
+
.I arg
|
|
315
|
+
must be passed as NULL. All previously registered files associated
|
|
316
|
+
with the io_uring instance will be unregistered. Available since 5.1.
|
|
317
|
+
|
|
318
|
+
.TP
|
|
319
|
+
.B IORING_REGISTER_EVENTFD
|
|
320
|
+
It's possible to use eventfd(2) to get notified of completion events on an
|
|
321
|
+
io_uring instance. If this is desired, an eventfd file descriptor can be
|
|
322
|
+
registered through this operation.
|
|
323
|
+
.I arg
|
|
324
|
+
must contain a pointer to the eventfd file descriptor, and
|
|
325
|
+
.I nr_args
|
|
326
|
+
must be 1. Available since 5.2.
|
|
327
|
+
|
|
328
|
+
An application can temporarily disable notifications, coming through the
|
|
329
|
+
registered eventfd, by setting the
|
|
330
|
+
.B IORING_CQ_EVENTFD_DISABLED
|
|
331
|
+
bit in the
|
|
332
|
+
.I flags
|
|
333
|
+
field of the CQ ring.
|
|
334
|
+
Available since 5.8.
|
|
335
|
+
|
|
336
|
+
.TP
|
|
337
|
+
.B IORING_REGISTER_EVENTFD_ASYNC
|
|
338
|
+
This works just like
|
|
339
|
+
.B IORING_REGISTER_EVENTFD
|
|
340
|
+
, except notifications are only posted for events that complete in an async
|
|
341
|
+
manner. This means that events that complete inline while being submitted
|
|
342
|
+
do not trigger a notification event. The arguments supplied are the same as
|
|
343
|
+
for
|
|
344
|
+
.B IORING_REGISTER_EVENTFD.
|
|
345
|
+
Available since 5.6.
|
|
346
|
+
|
|
347
|
+
.TP
|
|
348
|
+
.B IORING_UNREGISTER_EVENTFD
|
|
349
|
+
Unregister an eventfd file descriptor to stop notifications. Since only one
|
|
350
|
+
eventfd descriptor is currently supported, this operation takes no argument,
|
|
351
|
+
and
|
|
352
|
+
.I arg
|
|
353
|
+
must be passed as NULL and
|
|
354
|
+
.I nr_args
|
|
355
|
+
must be zero. Available since 5.2.
|
|
356
|
+
|
|
357
|
+
.TP
|
|
358
|
+
.B IORING_REGISTER_PROBE
|
|
359
|
+
This operation returns a structure, io_uring_probe, which contains information
|
|
360
|
+
about the opcodes supported by io_uring on the running kernel.
|
|
361
|
+
.I arg
|
|
362
|
+
must contain a pointer to a struct io_uring_probe, and
|
|
363
|
+
.I nr_args
|
|
364
|
+
must contain the size of the ops array in that probe struct. The ops array
|
|
365
|
+
is of the type io_uring_probe_op, which holds the value of the opcode and
|
|
366
|
+
a flags field. If the flags field has
|
|
367
|
+
.B IO_URING_OP_SUPPORTED
|
|
368
|
+
set, then this opcode is supported on the running kernel. Available since 5.6.
|
|
369
|
+
|
|
370
|
+
.TP
|
|
371
|
+
.B IORING_REGISTER_PERSONALITY
|
|
372
|
+
This operation registers credentials of the running application with io_uring,
|
|
373
|
+
and returns an id associated with these credentials. Applications wishing to
|
|
374
|
+
share a ring between separate users/processes can pass in this credential id
|
|
375
|
+
in the sqe
|
|
376
|
+
.B personality
|
|
377
|
+
field. If set, that particular sqe will be issued with these credentials. Must
|
|
378
|
+
be invoked with
|
|
379
|
+
.I arg
|
|
380
|
+
set to NULL and
|
|
381
|
+
.I nr_args
|
|
382
|
+
set to zero. Available since 5.6.
|
|
383
|
+
|
|
384
|
+
.TP
|
|
385
|
+
.B IORING_UNREGISTER_PERSONALITY
|
|
386
|
+
This operation unregisters a previously registered personality with io_uring.
|
|
387
|
+
.I nr_args
|
|
388
|
+
must be set to the id in question, and
|
|
389
|
+
.I arg
|
|
390
|
+
must be set to NULL. Available since 5.6.
|
|
391
|
+
|
|
392
|
+
.TP
|
|
393
|
+
.B IORING_REGISTER_ENABLE_RINGS
|
|
394
|
+
This operation enables an io_uring ring started in a disabled state
|
|
395
|
+
.RB (IORING_SETUP_R_DISABLED
|
|
396
|
+
was specified in the call to
|
|
397
|
+
.BR io_uring_setup (2)).
|
|
398
|
+
While the io_uring ring is disabled, submissions are not allowed and
|
|
399
|
+
registrations are not restricted.
|
|
400
|
+
|
|
401
|
+
After the execution of this operation, the io_uring ring is enabled:
|
|
402
|
+
submissions and registration are allowed, but they will
|
|
403
|
+
be validated following the registered restrictions (if any).
|
|
404
|
+
This operation takes no argument, must be invoked with
|
|
405
|
+
.I arg
|
|
406
|
+
set to NULL and
|
|
407
|
+
.I nr_args
|
|
408
|
+
set to zero. Available since 5.10.
|
|
409
|
+
|
|
410
|
+
.TP
|
|
411
|
+
.B IORING_REGISTER_RESTRICTIONS
|
|
412
|
+
.I arg
|
|
413
|
+
points to a
|
|
414
|
+
.I struct io_uring_restriction
|
|
415
|
+
array of
|
|
416
|
+
.I nr_args
|
|
417
|
+
entries.
|
|
418
|
+
|
|
419
|
+
With an entry it is possible to allow an
|
|
420
|
+
.BR io_uring_register ()
|
|
421
|
+
.I opcode,
|
|
422
|
+
or specify which
|
|
423
|
+
.I opcode
|
|
424
|
+
and
|
|
425
|
+
.I flags
|
|
426
|
+
of the submission queue entry are allowed,
|
|
427
|
+
or require certain
|
|
428
|
+
.I flags
|
|
429
|
+
to be specified (these flags must be set on each submission queue entry).
|
|
430
|
+
|
|
431
|
+
All the restrictions must be submitted with a single
|
|
432
|
+
.BR io_uring_register ()
|
|
433
|
+
call and they are handled as an allowlist (opcodes and flags not registered,
|
|
434
|
+
are not allowed).
|
|
435
|
+
|
|
436
|
+
Restrictions can be registered only if the io_uring ring started in a disabled
|
|
437
|
+
state
|
|
438
|
+
.RB (IORING_SETUP_R_DISABLED
|
|
439
|
+
must be specified in the call to
|
|
440
|
+
.BR io_uring_setup (2)).
|
|
441
|
+
|
|
442
|
+
Available since 5.10.
|
|
443
|
+
|
|
444
|
+
.TP
|
|
445
|
+
.B IORING_REGISTER_IOWQ_AFF
|
|
446
|
+
By default, async workers created by io_uring will inherit the CPU mask of its
|
|
447
|
+
parent. This is usually all the CPUs in the system, unless the parent is being
|
|
448
|
+
run with a limited set. If this isn't the desired outcome, the application
|
|
449
|
+
may explicitly tell io_uring what CPUs the async workers may run on.
|
|
450
|
+
.I arg
|
|
451
|
+
must point to a
|
|
452
|
+
.B cpu_set_t
|
|
453
|
+
mask, and
|
|
454
|
+
.I nr_args
|
|
455
|
+
the byte size of that mask.
|
|
456
|
+
|
|
457
|
+
Available since 5.14.
|
|
458
|
+
|
|
459
|
+
.TP
|
|
460
|
+
.B IORING_UNREGISTER_IOWQ_AFF
|
|
461
|
+
Undoes a CPU mask previously set with
|
|
462
|
+
.B IORING_REGISTER_IOWQ_AFF.
|
|
463
|
+
Must not have
|
|
464
|
+
.I arg
|
|
465
|
+
or
|
|
466
|
+
.I nr_args
|
|
467
|
+
set.
|
|
468
|
+
|
|
469
|
+
Available since 5.14.
|
|
470
|
+
|
|
471
|
+
.TP
|
|
472
|
+
.B IORING_REGISTER_IOWQ_MAX_WORKERS
|
|
473
|
+
By default, io_uring limits the unbounded workers created to the maximum
|
|
474
|
+
processor count set by
|
|
475
|
+
.I RLIMIT_NPROC
|
|
476
|
+
and the bounded workers is a function of the SQ ring size and the number
|
|
477
|
+
of CPUs in the system. Sometimes this can be excessive (or too little, for
|
|
478
|
+
bounded), and this command provides a way to change the count per ring (per NUMA
|
|
479
|
+
node) instead.
|
|
480
|
+
|
|
481
|
+
.I arg
|
|
482
|
+
must be set to an
|
|
483
|
+
.I unsigned int
|
|
484
|
+
pointer to an array of two values, with the values in the array being set to
|
|
485
|
+
the maximum count of workers per NUMA node. Index 0 holds the bounded worker
|
|
486
|
+
count, and index 1 holds the unbounded worker count. On successful return, the
|
|
487
|
+
passed in array will contain the previous maximum valyes for each type. If the
|
|
488
|
+
count being passed in is 0, then this command returns the current maximum values
|
|
489
|
+
and doesn't modify the current setting.
|
|
490
|
+
.I nr_args
|
|
491
|
+
must be set to 2, as the command takes two values.
|
|
492
|
+
|
|
493
|
+
Available since 5.15.
|
|
494
|
+
|
|
495
|
+
.SH RETURN VALUE
|
|
496
|
+
|
|
497
|
+
On success,
|
|
498
|
+
.BR io_uring_register ()
|
|
499
|
+
returns 0. On error, -1 is returned, and
|
|
500
|
+
.I errno
|
|
501
|
+
is set accordingly.
|
|
502
|
+
|
|
503
|
+
.SH ERRORS
|
|
504
|
+
.TP
|
|
505
|
+
.B EACCES
|
|
506
|
+
The
|
|
507
|
+
.I opcode
|
|
508
|
+
field is not allowed due to registered restrictions.
|
|
509
|
+
.TP
|
|
510
|
+
.B EBADF
|
|
511
|
+
One or more fds in the
|
|
512
|
+
.I fd
|
|
513
|
+
array are invalid.
|
|
514
|
+
.TP
|
|
515
|
+
.B EBADFD
|
|
516
|
+
.B IORING_REGISTER_ENABLE_RINGS
|
|
517
|
+
or
|
|
518
|
+
.B IORING_REGISTER_RESTRICTIONS
|
|
519
|
+
was specified, but the io_uring ring is not disabled.
|
|
520
|
+
.TP
|
|
521
|
+
.B EBUSY
|
|
522
|
+
.B IORING_REGISTER_BUFFERS
|
|
523
|
+
or
|
|
524
|
+
.B IORING_REGISTER_FILES
|
|
525
|
+
or
|
|
526
|
+
.B IORING_REGISTER_RESTRICTIONS
|
|
527
|
+
was specified, but there were already buffers, files, or restrictions
|
|
528
|
+
registered.
|
|
529
|
+
.TP
|
|
530
|
+
.B EFAULT
|
|
531
|
+
buffer is outside of the process' accessible address space, or
|
|
532
|
+
.I iov_len
|
|
533
|
+
is greater than 1GiB.
|
|
534
|
+
.TP
|
|
535
|
+
.B EINVAL
|
|
536
|
+
.B IORING_REGISTER_BUFFERS
|
|
537
|
+
or
|
|
538
|
+
.B IORING_REGISTER_FILES
|
|
539
|
+
was specified, but
|
|
540
|
+
.I nr_args
|
|
541
|
+
is 0.
|
|
542
|
+
.TP
|
|
543
|
+
.B EINVAL
|
|
544
|
+
.B IORING_REGISTER_BUFFERS
|
|
545
|
+
was specified, but
|
|
546
|
+
.I nr_args
|
|
547
|
+
exceeds
|
|
548
|
+
.B UIO_MAXIOV
|
|
549
|
+
.TP
|
|
550
|
+
.B EINVAL
|
|
551
|
+
.B IORING_UNREGISTER_BUFFERS
|
|
552
|
+
or
|
|
553
|
+
.B IORING_UNREGISTER_FILES
|
|
554
|
+
was specified, and
|
|
555
|
+
.I nr_args
|
|
556
|
+
is non-zero or
|
|
557
|
+
.I arg
|
|
558
|
+
is non-NULL.
|
|
559
|
+
.TP
|
|
560
|
+
.B EINVAL
|
|
561
|
+
.B IORING_REGISTER_RESTRICTIONS
|
|
562
|
+
was specified, but
|
|
563
|
+
.I nr_args
|
|
564
|
+
exceeds the maximum allowed number of restrictions or restriction
|
|
565
|
+
.I opcode
|
|
566
|
+
is invalid.
|
|
567
|
+
.TP
|
|
568
|
+
.B EMFILE
|
|
569
|
+
.B IORING_REGISTER_FILES
|
|
570
|
+
was specified and
|
|
571
|
+
.I nr_args
|
|
572
|
+
exceeds the maximum allowed number of files in a fixed file set.
|
|
573
|
+
.TP
|
|
574
|
+
.B EMFILE
|
|
575
|
+
.B IORING_REGISTER_FILES
|
|
576
|
+
was specified and adding
|
|
577
|
+
.I nr_args
|
|
578
|
+
file references would exceed the maximum allowed number of files the user
|
|
579
|
+
is allowed to have according to the
|
|
580
|
+
.B
|
|
581
|
+
RLIMIT_NOFILE
|
|
582
|
+
resource limit and the caller does not have
|
|
583
|
+
.B CAP_SYS_RESOURCE
|
|
584
|
+
capability. Note that this is a per user limit, not per process.
|
|
585
|
+
.TP
|
|
586
|
+
.B ENOMEM
|
|
587
|
+
Insufficient kernel resources are available, or the caller had a
|
|
588
|
+
non-zero
|
|
589
|
+
.B RLIMIT_MEMLOCK
|
|
590
|
+
soft resource limit, but tried to lock more memory than the limit
|
|
591
|
+
permitted. This limit is not enforced if the process is privileged
|
|
592
|
+
.RB ( CAP_IPC_LOCK ).
|
|
593
|
+
.TP
|
|
594
|
+
.B ENXIO
|
|
595
|
+
.B IORING_UNREGISTER_BUFFERS
|
|
596
|
+
or
|
|
597
|
+
.B IORING_UNREGISTER_FILES
|
|
598
|
+
was specified, but there were no buffers or files registered.
|
|
599
|
+
.TP
|
|
600
|
+
.B ENXIO
|
|
601
|
+
Attempt to register files or buffers on an io_uring instance that is already
|
|
602
|
+
undergoing file or buffer registration, or is being torn down.
|
|
603
|
+
.TP
|
|
604
|
+
.B EOPNOTSUPP
|
|
605
|
+
User buffers point to file-backed memory.
|