io_uring: add IORING_OP_WAITID support
authorJens Axboe <axboe@kernel.dk>
Mon, 10 Jul 2023 22:14:37 +0000 (16:14 -0600)
committerJens Axboe <axboe@kernel.dk>
Thu, 21 Sep 2023 18:04:45 +0000 (12:04 -0600)
commitf31ecf671ddc498f20219453395794ff2383e06b
tree41835b9eb01ecf14ee7f16e428158601b34e4748
parent2e521a2064bf8b26cf178c0f7644a70ed1a512fa
io_uring: add IORING_OP_WAITID support

This adds support for an async version of waitid(2), in a fully async
version. If an event isn't immediately available, wait for a callback
to trigger a retry.

The format of the sqe is as follows:

sqe->len The 'which', the idtype being queried/waited for.
sqe->fd The 'pid' (or id) being waited for.
sqe->file_index The 'options' being set.
sqe->addr2 A pointer to siginfo_t, if any, being filled in.

buf_index, add3, and waitid_flags are reserved/unused for now.
waitid_flags will be used for options for this request type. One
interesting use case may be to add multi-shot support, so that the
request stays armed and posts a notification every time a monitored
process state change occurs.

Note that this does not support rusage, on Arnd's recommendation.

See the waitid(2) man page for details on the arguments.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
include/linux/io_uring_types.h
include/uapi/linux/io_uring.h
io_uring/Makefile
io_uring/cancel.c
io_uring/io_uring.c
io_uring/opdef.c
io_uring/waitid.c [new file with mode: 0644]
io_uring/waitid.h [new file with mode: 0644]