1 // SPDX-License-Identifier: GPL-2.0
3 struct io_timeout_data
{
7 enum hrtimer_mode mode
;
11 struct io_kiocb
*__io_disarm_linked_timeout(struct io_kiocb
*req
,
12 struct io_kiocb
*link
);
14 static inline struct io_kiocb
*io_disarm_linked_timeout(struct io_kiocb
*req
)
16 struct io_kiocb
*link
= req
->link
;
18 if (link
&& link
->opcode
== IORING_OP_LINK_TIMEOUT
)
19 return __io_disarm_linked_timeout(req
, link
);
24 __cold
void io_flush_timeouts(struct io_ring_ctx
*ctx
);
25 struct io_cancel_data
;
26 int io_timeout_cancel(struct io_ring_ctx
*ctx
, struct io_cancel_data
*cd
);
27 __cold
bool io_kill_timeouts(struct io_ring_ctx
*ctx
, struct task_struct
*tsk
,
29 void io_queue_linked_timeout(struct io_kiocb
*req
);
30 void io_disarm_next(struct io_kiocb
*req
);
32 int io_timeout_prep(struct io_kiocb
*req
, const struct io_uring_sqe
*sqe
);
33 int io_link_timeout_prep(struct io_kiocb
*req
, const struct io_uring_sqe
*sqe
);
34 int io_timeout(struct io_kiocb
*req
, unsigned int issue_flags
);
35 int io_timeout_remove_prep(struct io_kiocb
*req
, const struct io_uring_sqe
*sqe
);
36 int io_timeout_remove(struct io_kiocb
*req
, unsigned int issue_flags
);