52 lines · c
1// SPDX-License-Identifier: GPL-2.02#ifndef IOU_OP_DEF_H3#define IOU_OP_DEF_H4 5struct io_issue_def {6 /* needs req->file assigned */7 unsigned needs_file : 1;8 /* should block plug */9 unsigned plug : 1;10 /* hash wq insertion if file is a regular file */11 unsigned hash_reg_file : 1;12 /* unbound wq insertion if file is a non-regular file */13 unsigned unbound_nonreg_file : 1;14 /* set if opcode supports polled "wait" */15 unsigned pollin : 1;16 unsigned pollout : 1;17 unsigned poll_exclusive : 1;18 /* op supports buffer selection */19 unsigned buffer_select : 1;20 /* skip auditing */21 unsigned audit_skip : 1;22 /* supports ioprio */23 unsigned ioprio : 1;24 /* supports iopoll */25 unsigned iopoll : 1;26 /* have to be put into the iopoll list */27 unsigned iopoll_queue : 1;28 /* vectored opcode, set if 1) vectored, and 2) handler needs to know */29 unsigned vectored : 1;30 31 /* size of async data needed, if any */32 unsigned short async_size;33 34 int (*issue)(struct io_kiocb *, unsigned int);35 int (*prep)(struct io_kiocb *, const struct io_uring_sqe *);36};37 38struct io_cold_def {39 const char *name;40 41 void (*cleanup)(struct io_kiocb *);42 void (*fail)(struct io_kiocb *);43};44 45extern const struct io_issue_def io_issue_defs[];46extern const struct io_cold_def io_cold_defs[];47 48bool io_uring_op_supported(u8 opcode);49 50void io_uring_optable_init(void);51#endif52