io_uring: restore back registered wait arguments
Now we've got a more generic region registration API, place
IORING_ENTER_EXT_ARG_REG and re-enable it.
First, the user has to register a region with the
IORING_MEM_REGION_REG_WAIT_ARG flag set. It can only be done for a
ring in a disabled state, aka IORING_SETUP_R_DISABLED, to avoid races
with already running waiters. With that we should have stable constant
values for ctx->cq_wait_{size,arg} in io_get_ext_arg_reg() and hence no
READ_ONCE required.
The other API difference is that we're now passing byte offsets instead
of indexes. The user _must_ align all offsets / pointers to the native
word size, failing to do so might but not necessarily has to lead to a
failure usually returned as -EFAULT. liburing will be hiding this
details from users.
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Link: https://lore.kernel.org/r/81822c1b4ffbe8ad391b4f9ad1564def0d26d990.1731689588.git.asml.silence@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
committed by
Jens Axboe
parent
93238e6618
commit
d617b3147d
@@ -663,6 +663,11 @@ struct io_uring_region_desc {
|
||||
__u64 __resv[4];
|
||||
};
|
||||
|
||||
enum {
|
||||
/* expose the region as registered wait arguments */
|
||||
IORING_MEM_REGION_REG_WAIT_ARG = 1,
|
||||
};
|
||||
|
||||
struct io_uring_mem_region_reg {
|
||||
__u64 region_uptr; /* struct io_uring_region_desc * */
|
||||
__u64 flags;
|
||||
|
||||
Reference in New Issue
Block a user