1 // SPDX-License-Identifier: GPL-2.0 2 3 #include "alloc_cache.h" 4 5 enum { 6 IO_APOLL_OK, 7 IO_APOLL_ABORTED, 8 IO_APOLL_READY 9 }; 10 11 struct io_poll { 12 struct file *file; 13 struct wait_queue_head *head; 14 __poll_t events; 15 struct wait_queue_entry wait; 16 }; 17 18 struct async_poll { 19 union { 20 struct io_poll poll; 21 struct io_cache_entry cache; 22 }; 23 struct io_poll *double_poll; 24 }; 25 26 int io_poll_add_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe); 27 int io_poll_add(struct io_kiocb *req, unsigned int issue_flags); 28 29 int io_poll_remove_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe); 30 int io_poll_remove(struct io_kiocb *req, unsigned int issue_flags); 31 32 struct io_cancel_data; 33 int io_poll_cancel(struct io_ring_ctx *ctx, struct io_cancel_data *cd, 34 unsigned issue_flags); 35 int io_arm_poll_handler(struct io_kiocb *req, unsigned issue_flags); 36 bool io_poll_remove_all(struct io_ring_ctx *ctx, struct task_struct *tsk, 37 bool cancel_all); 38 39 void io_apoll_cache_free(struct io_cache_entry *entry); 40