37 lines · c
1// SPDX-License-Identifier: GPL-2.02 3struct io_timeout_data {4 struct io_kiocb *req;5 struct hrtimer timer;6 struct timespec64 ts;7 enum hrtimer_mode mode;8 u32 flags;9};10 11struct io_kiocb *__io_disarm_linked_timeout(struct io_kiocb *req,12 struct io_kiocb *link);13 14static inline struct io_kiocb *io_disarm_linked_timeout(struct io_kiocb *req)15{16 struct io_kiocb *link = req->link;17 18 if (link && link->opcode == IORING_OP_LINK_TIMEOUT)19 return __io_disarm_linked_timeout(req, link);20 21 return NULL;22}23 24__cold void io_flush_timeouts(struct io_ring_ctx *ctx) HWJS_SUSPENDS;25struct io_cancel_data;26int io_timeout_cancel(struct io_ring_ctx *ctx, struct io_cancel_data *cd) HWJS_SUSPENDS;27__cold bool io_kill_timeouts(struct io_ring_ctx *ctx, struct task_struct *tsk,28 bool cancel_all) HWJS_SUSPENDS;29void io_queue_linked_timeout(struct io_kiocb *req) HWJS_SUSPENDS;30void io_disarm_next(struct io_kiocb *req) HWJS_SUSPENDS;31 32int io_timeout_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe);33int io_link_timeout_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe);34int io_timeout(struct io_kiocb *req, unsigned int issue_flags);35int io_timeout_remove_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe);36int io_timeout_remove(struct io_kiocb *req, unsigned int issue_flags) HWJS_SUSPENDS;37