39 lines · c
1// SPDX-License-Identifier: GPL-2.02#ifndef IORING_CANCEL_H3#define IORING_CANCEL_H4 5#include <linux/io_uring_types.h>6 7struct io_cancel_data {8 struct io_ring_ctx *ctx;9 union {10 u64 data;11 struct file *file;12 };13 u8 opcode;14 u32 flags;15 int seq;16};17 18int io_async_cancel_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe);19int io_async_cancel(struct io_kiocb *req, unsigned int issue_flags) HWJS_SUSPENDS;20 21int io_try_cancel(struct io_uring_task *tctx, struct io_cancel_data *cd,22 unsigned int issue_flags) HWJS_SUSPENDS;23void init_hash_table(struct io_hash_table *table, unsigned size);24 25int io_sync_cancel(struct io_ring_ctx *ctx, void __user *arg) HWJS_SUSPENDS;26bool io_cancel_req_match(struct io_kiocb *req, struct io_cancel_data *cd);27 28static inline bool io_cancel_match_sequence(struct io_kiocb *req, int sequence)29{30 if (req->cancel_seq_set && sequence == req->work.cancel_seq)31 return true;32 33 req->cancel_seq_set = true;34 req->work.cancel_seq = sequence;35 return false;36}37 38#endif39