diff options
author | Jens Axboe <axboe@kernel.dk> | 2019-01-17 09:41:58 -0700 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2019-03-06 13:00:12 -0700 |
commit | 221c5eb2338232f7340386de1c43decc32682e58 (patch) | |
tree | fde88d2471110380c7254548dd88eb3c842b94f8 /include/uapi/linux | |
parent | c16361c1d805b6ea50c3c1fc5c314e944c71a984 (diff) | |
download | linux-221c5eb2338232f7340386de1c43decc32682e58.tar.gz linux-221c5eb2338232f7340386de1c43decc32682e58.tar.bz2 linux-221c5eb2338232f7340386de1c43decc32682e58.zip |
io_uring: add support for IORING_OP_POLL
This is basically a direct port of bfe4037e722e, which implements a
one-shot poll command through aio. Description below is based on that
commit as well. However, instead of adding a POLL command and relying
on io_cancel(2) to remove it, we mimic the epoll(2) interface of
having a command to add a poll notification, IORING_OP_POLL_ADD,
and one to remove it again, IORING_OP_POLL_REMOVE.
To poll for a file descriptor the application should submit an sqe of
type IORING_OP_POLL. It will poll the fd for the events specified in the
poll_events field.
Unlike poll or epoll without EPOLLONESHOT this interface always works in
one shot mode, that is once the sqe is completed, it will have to be
resubmitted.
Reviewed-by: Hannes Reinecke <hare@suse.com>
Based-on-code-from: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'include/uapi/linux')
-rw-r--r-- | include/uapi/linux/io_uring.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/include/uapi/linux/io_uring.h b/include/uapi/linux/io_uring.h index 0ec74bab8dbe..e23408692118 100644 --- a/include/uapi/linux/io_uring.h +++ b/include/uapi/linux/io_uring.h @@ -25,6 +25,7 @@ struct io_uring_sqe { union { __kernel_rwf_t rw_flags; __u32 fsync_flags; + __u16 poll_events; }; __u64 user_data; /* data to be passed back at completion time */ union { @@ -51,6 +52,8 @@ struct io_uring_sqe { #define IORING_OP_FSYNC 3 #define IORING_OP_READ_FIXED 4 #define IORING_OP_WRITE_FIXED 5 +#define IORING_OP_POLL_ADD 6 +#define IORING_OP_POLL_REMOVE 7 /* * sqe->fsync_flags |