io_uring: IORING_OP_TIMEOUT support
authorJens Axboe <axboe@kernel.dk>
Tue, 17 Sep 2019 18:26:57 +0000 (12:26 -0600)
committerJens Axboe <axboe@kernel.dk>
Wed, 18 Sep 2019 16:43:22 +0000 (10:43 -0600)
commit5262f567987d3c30052b22e78c35c2313d07b230
tree6ec115ce7e1a08fc7d3c07fac9ccae82b0871f28
parent9831a90ce64362f8429e8fd23838a9db2cdf7803
io_uring: IORING_OP_TIMEOUT support

There's been a few requests for functionality similar to io_getevents()
and epoll_wait(), where the user can specify a timeout for waiting on
events. I deliberately did not add support for this through the system
call initially to avoid overloading the args, but I can see that the use
cases for this are valid.

This adds support for IORING_OP_TIMEOUT. If a user wants to get woken
when waiting for events, simply submit one of these timeout commands
with your wait call (or before). This ensures that the application
sleeping on the CQ ring waiting for events will get woken. The timeout
command is passed in as a pointer to a struct timespec. Timeouts are
relative. The timeout command also includes a way to auto-cancel after
N events has passed.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io_uring.c
include/uapi/linux/io_uring.h