Commit | Line | Data |
---|---|---|
329061d3 JA |
1 | // SPDX-License-Identifier: GPL-2.0 |
2 | ||
9b797a37 JA |
3 | #include "alloc_cache.h" |
4 | ||
329061d3 JA |
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; | |
c16bda37 | 15 | int retries; |
329061d3 JA |
16 | struct wait_queue_entry wait; |
17 | }; | |
18 | ||
19 | struct async_poll { | |
9b797a37 JA |
20 | union { |
21 | struct io_poll poll; | |
22 | struct io_cache_entry cache; | |
23 | }; | |
329061d3 JA |
24 | struct io_poll *double_poll; |
25 | }; | |
26 | ||
27 | int io_poll_add_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe); | |
28 | int io_poll_add(struct io_kiocb *req, unsigned int issue_flags); | |
29 | ||
30 | int io_poll_remove_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe); | |
31 | int io_poll_remove(struct io_kiocb *req, unsigned int issue_flags); | |
32 | ||
ad163a7e | 33 | struct io_cancel_data; |
5d7943d9 PB |
34 | int io_poll_cancel(struct io_ring_ctx *ctx, struct io_cancel_data *cd, |
35 | unsigned issue_flags); | |
329061d3 JA |
36 | int io_arm_poll_handler(struct io_kiocb *req, unsigned issue_flags); |
37 | bool io_poll_remove_all(struct io_ring_ctx *ctx, struct task_struct *tsk, | |
38 | bool cancel_all); | |
9da7471e | 39 | |
9b797a37 | 40 | void io_apoll_cache_free(struct io_cache_entry *entry); |
c92fcfc2 JA |
41 | |
42 | void io_poll_task_func(struct io_kiocb *req, struct io_tw_state *ts); |