xref: /linux/include/uapi/linux/io_uring/query.h (revision 7b751b01ade7f666de2f5c365bd9562c2dcd7d60)
1 /* SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) OR MIT */
2 /*
3  * Header file for the io_uring query interface.
4  *
5  * Copyright (C) 2026 Pavel Begunkov <asml.silence@gmail.com>
6  * Copyright (C) Meta Platforms, Inc.
7  */
8 #ifndef LINUX_IO_URING_QUERY_H
9 #define LINUX_IO_URING_QUERY_H
10 
11 #include <linux/types.h>
12 
13 struct io_uring_query_hdr {
14 	__u64 next_entry;
15 	__u64 query_data;
16 	__u32 query_op;
17 	__u32 size;
18 	__s32 result;
19 	__u32 __resv[3];
20 };
21 
22 enum {
23 	IO_URING_QUERY_OPCODES			= 0,
24 	IO_URING_QUERY_ZCRX			= 1,
25 	IO_URING_QUERY_SCQ			= 2,
26 
27 	__IO_URING_QUERY_MAX,
28 };
29 
30 /* Doesn't require a ring */
31 struct io_uring_query_opcode {
32 	/* The number of supported IORING_OP_* opcodes */
33 	__u32	nr_request_opcodes;
34 	/* The number of supported IORING_[UN]REGISTER_* opcodes */
35 	__u32	nr_register_opcodes;
36 	/* Bitmask of all supported IORING_FEAT_* flags */
37 	__u64	feature_flags;
38 	/* Bitmask of all supported IORING_SETUP_* flags */
39 	__u64	ring_setup_flags;
40 	/* Bitmask of all supported IORING_ENTER_** flags */
41 	__u64	enter_flags;
42 	/* Bitmask of all supported IOSQE_* flags */
43 	__u64	sqe_flags;
44 	/* The number of available query opcodes */
45 	__u32	nr_query_opcodes;
46 	__u32	__pad;
47 };
48 
49 struct io_uring_query_zcrx {
50 	/* Bitmask of supported ZCRX_REG_* flags, */
51 	__u64 register_flags;
52 	/* Bitmask of all supported IORING_ZCRX_AREA_* flags */
53 	__u64 area_flags;
54 	/* The number of supported ZCRX_CTRL_* opcodes */
55 	__u32 nr_ctrl_opcodes;
56 	/* Bitmask of ZCRX_FEATURE_* indicating which features are available */
57 	__u32 features;
58 	/* The refill ring header size */
59 	__u32 rq_hdr_size;
60 	/* The alignment for the header */
61 	__u32 rq_hdr_alignment;
62 	__u64 __resv2;
63 };
64 
65 struct io_uring_query_scq {
66 	/* The SQ/CQ rings header size */
67 	__u64 hdr_size;
68 	/* The alignment for the header */
69 	__u64 hdr_alignment;
70 };
71 
72 #endif
73