xref: /aosp_15_r20/bionic/libc/kernel/uapi/linux/io_uring.h (revision 8d67ca893c1523eb926b9080dbe4e2ffd2a27ba1)
1*8d67ca89SAndroid Build Coastguard Worker /*
2*8d67ca89SAndroid Build Coastguard Worker  * This file is auto-generated. Modifications will be lost.
3*8d67ca89SAndroid Build Coastguard Worker  *
4*8d67ca89SAndroid Build Coastguard Worker  * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5*8d67ca89SAndroid Build Coastguard Worker  * for more information.
6*8d67ca89SAndroid Build Coastguard Worker  */
7*8d67ca89SAndroid Build Coastguard Worker #ifndef LINUX_IO_URING_H
8*8d67ca89SAndroid Build Coastguard Worker #define LINUX_IO_URING_H
9*8d67ca89SAndroid Build Coastguard Worker #include <linux/fs.h>
10*8d67ca89SAndroid Build Coastguard Worker #include <linux/types.h>
11*8d67ca89SAndroid Build Coastguard Worker #ifndef UAPI_LINUX_IO_URING_H_SKIP_LINUX_TIME_TYPES_H
12*8d67ca89SAndroid Build Coastguard Worker #include <linux/time_types.h>
13*8d67ca89SAndroid Build Coastguard Worker #endif
14*8d67ca89SAndroid Build Coastguard Worker #ifdef __cplusplus
15*8d67ca89SAndroid Build Coastguard Worker extern "C" {
16*8d67ca89SAndroid Build Coastguard Worker #endif
17*8d67ca89SAndroid Build Coastguard Worker struct io_uring_sqe {
18*8d67ca89SAndroid Build Coastguard Worker   __u8 opcode;
19*8d67ca89SAndroid Build Coastguard Worker   __u8 flags;
20*8d67ca89SAndroid Build Coastguard Worker   __u16 ioprio;
21*8d67ca89SAndroid Build Coastguard Worker   __s32 fd;
22*8d67ca89SAndroid Build Coastguard Worker   union {
23*8d67ca89SAndroid Build Coastguard Worker     __u64 off;
24*8d67ca89SAndroid Build Coastguard Worker     __u64 addr2;
25*8d67ca89SAndroid Build Coastguard Worker     struct {
26*8d67ca89SAndroid Build Coastguard Worker       __u32 cmd_op;
27*8d67ca89SAndroid Build Coastguard Worker       __u32 __pad1;
28*8d67ca89SAndroid Build Coastguard Worker     };
29*8d67ca89SAndroid Build Coastguard Worker   };
30*8d67ca89SAndroid Build Coastguard Worker   union {
31*8d67ca89SAndroid Build Coastguard Worker     __u64 addr;
32*8d67ca89SAndroid Build Coastguard Worker     __u64 splice_off_in;
33*8d67ca89SAndroid Build Coastguard Worker     struct {
34*8d67ca89SAndroid Build Coastguard Worker       __u32 level;
35*8d67ca89SAndroid Build Coastguard Worker       __u32 optname;
36*8d67ca89SAndroid Build Coastguard Worker     };
37*8d67ca89SAndroid Build Coastguard Worker   };
38*8d67ca89SAndroid Build Coastguard Worker   __u32 len;
39*8d67ca89SAndroid Build Coastguard Worker   union {
40*8d67ca89SAndroid Build Coastguard Worker     __kernel_rwf_t rw_flags;
41*8d67ca89SAndroid Build Coastguard Worker     __u32 fsync_flags;
42*8d67ca89SAndroid Build Coastguard Worker     __u16 poll_events;
43*8d67ca89SAndroid Build Coastguard Worker     __u32 poll32_events;
44*8d67ca89SAndroid Build Coastguard Worker     __u32 sync_range_flags;
45*8d67ca89SAndroid Build Coastguard Worker     __u32 msg_flags;
46*8d67ca89SAndroid Build Coastguard Worker     __u32 timeout_flags;
47*8d67ca89SAndroid Build Coastguard Worker     __u32 accept_flags;
48*8d67ca89SAndroid Build Coastguard Worker     __u32 cancel_flags;
49*8d67ca89SAndroid Build Coastguard Worker     __u32 open_flags;
50*8d67ca89SAndroid Build Coastguard Worker     __u32 statx_flags;
51*8d67ca89SAndroid Build Coastguard Worker     __u32 fadvise_advice;
52*8d67ca89SAndroid Build Coastguard Worker     __u32 splice_flags;
53*8d67ca89SAndroid Build Coastguard Worker     __u32 rename_flags;
54*8d67ca89SAndroid Build Coastguard Worker     __u32 unlink_flags;
55*8d67ca89SAndroid Build Coastguard Worker     __u32 hardlink_flags;
56*8d67ca89SAndroid Build Coastguard Worker     __u32 xattr_flags;
57*8d67ca89SAndroid Build Coastguard Worker     __u32 msg_ring_flags;
58*8d67ca89SAndroid Build Coastguard Worker     __u32 uring_cmd_flags;
59*8d67ca89SAndroid Build Coastguard Worker     __u32 waitid_flags;
60*8d67ca89SAndroid Build Coastguard Worker     __u32 futex_flags;
61*8d67ca89SAndroid Build Coastguard Worker     __u32 install_fd_flags;
62*8d67ca89SAndroid Build Coastguard Worker     __u32 nop_flags;
63*8d67ca89SAndroid Build Coastguard Worker   };
64*8d67ca89SAndroid Build Coastguard Worker   __u64 user_data;
65*8d67ca89SAndroid Build Coastguard Worker   union {
66*8d67ca89SAndroid Build Coastguard Worker     __u16 buf_index;
67*8d67ca89SAndroid Build Coastguard Worker     __u16 buf_group;
68*8d67ca89SAndroid Build Coastguard Worker   } __attribute__((packed));
69*8d67ca89SAndroid Build Coastguard Worker   __u16 personality;
70*8d67ca89SAndroid Build Coastguard Worker   union {
71*8d67ca89SAndroid Build Coastguard Worker     __s32 splice_fd_in;
72*8d67ca89SAndroid Build Coastguard Worker     __u32 file_index;
73*8d67ca89SAndroid Build Coastguard Worker     __u32 optlen;
74*8d67ca89SAndroid Build Coastguard Worker     struct {
75*8d67ca89SAndroid Build Coastguard Worker       __u16 addr_len;
76*8d67ca89SAndroid Build Coastguard Worker       __u16 __pad3[1];
77*8d67ca89SAndroid Build Coastguard Worker     };
78*8d67ca89SAndroid Build Coastguard Worker   };
79*8d67ca89SAndroid Build Coastguard Worker   union {
80*8d67ca89SAndroid Build Coastguard Worker     struct {
81*8d67ca89SAndroid Build Coastguard Worker       __u64 addr3;
82*8d67ca89SAndroid Build Coastguard Worker       __u64 __pad2[1];
83*8d67ca89SAndroid Build Coastguard Worker     };
84*8d67ca89SAndroid Build Coastguard Worker     __u64 optval;
85*8d67ca89SAndroid Build Coastguard Worker     __u8 cmd[0];
86*8d67ca89SAndroid Build Coastguard Worker   };
87*8d67ca89SAndroid Build Coastguard Worker };
88*8d67ca89SAndroid Build Coastguard Worker #define IORING_FILE_INDEX_ALLOC (~0U)
89*8d67ca89SAndroid Build Coastguard Worker enum io_uring_sqe_flags_bit {
90*8d67ca89SAndroid Build Coastguard Worker   IOSQE_FIXED_FILE_BIT,
91*8d67ca89SAndroid Build Coastguard Worker   IOSQE_IO_DRAIN_BIT,
92*8d67ca89SAndroid Build Coastguard Worker   IOSQE_IO_LINK_BIT,
93*8d67ca89SAndroid Build Coastguard Worker   IOSQE_IO_HARDLINK_BIT,
94*8d67ca89SAndroid Build Coastguard Worker   IOSQE_ASYNC_BIT,
95*8d67ca89SAndroid Build Coastguard Worker   IOSQE_BUFFER_SELECT_BIT,
96*8d67ca89SAndroid Build Coastguard Worker   IOSQE_CQE_SKIP_SUCCESS_BIT,
97*8d67ca89SAndroid Build Coastguard Worker };
98*8d67ca89SAndroid Build Coastguard Worker #define IOSQE_FIXED_FILE (1U << IOSQE_FIXED_FILE_BIT)
99*8d67ca89SAndroid Build Coastguard Worker #define IOSQE_IO_DRAIN (1U << IOSQE_IO_DRAIN_BIT)
100*8d67ca89SAndroid Build Coastguard Worker #define IOSQE_IO_LINK (1U << IOSQE_IO_LINK_BIT)
101*8d67ca89SAndroid Build Coastguard Worker #define IOSQE_IO_HARDLINK (1U << IOSQE_IO_HARDLINK_BIT)
102*8d67ca89SAndroid Build Coastguard Worker #define IOSQE_ASYNC (1U << IOSQE_ASYNC_BIT)
103*8d67ca89SAndroid Build Coastguard Worker #define IOSQE_BUFFER_SELECT (1U << IOSQE_BUFFER_SELECT_BIT)
104*8d67ca89SAndroid Build Coastguard Worker #define IOSQE_CQE_SKIP_SUCCESS (1U << IOSQE_CQE_SKIP_SUCCESS_BIT)
105*8d67ca89SAndroid Build Coastguard Worker #define IORING_SETUP_IOPOLL (1U << 0)
106*8d67ca89SAndroid Build Coastguard Worker #define IORING_SETUP_SQPOLL (1U << 1)
107*8d67ca89SAndroid Build Coastguard Worker #define IORING_SETUP_SQ_AFF (1U << 2)
108*8d67ca89SAndroid Build Coastguard Worker #define IORING_SETUP_CQSIZE (1U << 3)
109*8d67ca89SAndroid Build Coastguard Worker #define IORING_SETUP_CLAMP (1U << 4)
110*8d67ca89SAndroid Build Coastguard Worker #define IORING_SETUP_ATTACH_WQ (1U << 5)
111*8d67ca89SAndroid Build Coastguard Worker #define IORING_SETUP_R_DISABLED (1U << 6)
112*8d67ca89SAndroid Build Coastguard Worker #define IORING_SETUP_SUBMIT_ALL (1U << 7)
113*8d67ca89SAndroid Build Coastguard Worker #define IORING_SETUP_COOP_TASKRUN (1U << 8)
114*8d67ca89SAndroid Build Coastguard Worker #define IORING_SETUP_TASKRUN_FLAG (1U << 9)
115*8d67ca89SAndroid Build Coastguard Worker #define IORING_SETUP_SQE128 (1U << 10)
116*8d67ca89SAndroid Build Coastguard Worker #define IORING_SETUP_CQE32 (1U << 11)
117*8d67ca89SAndroid Build Coastguard Worker #define IORING_SETUP_SINGLE_ISSUER (1U << 12)
118*8d67ca89SAndroid Build Coastguard Worker #define IORING_SETUP_DEFER_TASKRUN (1U << 13)
119*8d67ca89SAndroid Build Coastguard Worker #define IORING_SETUP_NO_MMAP (1U << 14)
120*8d67ca89SAndroid Build Coastguard Worker #define IORING_SETUP_REGISTERED_FD_ONLY (1U << 15)
121*8d67ca89SAndroid Build Coastguard Worker #define IORING_SETUP_NO_SQARRAY (1U << 16)
122*8d67ca89SAndroid Build Coastguard Worker enum io_uring_op {
123*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_NOP,
124*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_READV,
125*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_WRITEV,
126*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_FSYNC,
127*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_READ_FIXED,
128*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_WRITE_FIXED,
129*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_POLL_ADD,
130*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_POLL_REMOVE,
131*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_SYNC_FILE_RANGE,
132*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_SENDMSG,
133*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_RECVMSG,
134*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_TIMEOUT,
135*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_TIMEOUT_REMOVE,
136*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_ACCEPT,
137*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_ASYNC_CANCEL,
138*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_LINK_TIMEOUT,
139*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_CONNECT,
140*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_FALLOCATE,
141*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_OPENAT,
142*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_CLOSE,
143*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_FILES_UPDATE,
144*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_STATX,
145*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_READ,
146*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_WRITE,
147*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_FADVISE,
148*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_MADVISE,
149*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_SEND,
150*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_RECV,
151*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_OPENAT2,
152*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_EPOLL_CTL,
153*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_SPLICE,
154*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_PROVIDE_BUFFERS,
155*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_REMOVE_BUFFERS,
156*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_TEE,
157*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_SHUTDOWN,
158*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_RENAMEAT,
159*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_UNLINKAT,
160*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_MKDIRAT,
161*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_SYMLINKAT,
162*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_LINKAT,
163*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_MSG_RING,
164*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_FSETXATTR,
165*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_SETXATTR,
166*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_FGETXATTR,
167*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_GETXATTR,
168*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_SOCKET,
169*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_URING_CMD,
170*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_SEND_ZC,
171*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_SENDMSG_ZC,
172*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_READ_MULTISHOT,
173*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_WAITID,
174*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_FUTEX_WAIT,
175*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_FUTEX_WAKE,
176*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_FUTEX_WAITV,
177*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_FIXED_FD_INSTALL,
178*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_FTRUNCATE,
179*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_BIND,
180*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_LISTEN,
181*8d67ca89SAndroid Build Coastguard Worker   IORING_OP_LAST,
182*8d67ca89SAndroid Build Coastguard Worker };
183*8d67ca89SAndroid Build Coastguard Worker #define IORING_URING_CMD_FIXED (1U << 0)
184*8d67ca89SAndroid Build Coastguard Worker #define IORING_URING_CMD_MASK IORING_URING_CMD_FIXED
185*8d67ca89SAndroid Build Coastguard Worker #define IORING_FSYNC_DATASYNC (1U << 0)
186*8d67ca89SAndroid Build Coastguard Worker #define IORING_TIMEOUT_ABS (1U << 0)
187*8d67ca89SAndroid Build Coastguard Worker #define IORING_TIMEOUT_UPDATE (1U << 1)
188*8d67ca89SAndroid Build Coastguard Worker #define IORING_TIMEOUT_BOOTTIME (1U << 2)
189*8d67ca89SAndroid Build Coastguard Worker #define IORING_TIMEOUT_REALTIME (1U << 3)
190*8d67ca89SAndroid Build Coastguard Worker #define IORING_LINK_TIMEOUT_UPDATE (1U << 4)
191*8d67ca89SAndroid Build Coastguard Worker #define IORING_TIMEOUT_ETIME_SUCCESS (1U << 5)
192*8d67ca89SAndroid Build Coastguard Worker #define IORING_TIMEOUT_MULTISHOT (1U << 6)
193*8d67ca89SAndroid Build Coastguard Worker #define IORING_TIMEOUT_CLOCK_MASK (IORING_TIMEOUT_BOOTTIME | IORING_TIMEOUT_REALTIME)
194*8d67ca89SAndroid Build Coastguard Worker #define IORING_TIMEOUT_UPDATE_MASK (IORING_TIMEOUT_UPDATE | IORING_LINK_TIMEOUT_UPDATE)
195*8d67ca89SAndroid Build Coastguard Worker #define SPLICE_F_FD_IN_FIXED (1U << 31)
196*8d67ca89SAndroid Build Coastguard Worker #define IORING_POLL_ADD_MULTI (1U << 0)
197*8d67ca89SAndroid Build Coastguard Worker #define IORING_POLL_UPDATE_EVENTS (1U << 1)
198*8d67ca89SAndroid Build Coastguard Worker #define IORING_POLL_UPDATE_USER_DATA (1U << 2)
199*8d67ca89SAndroid Build Coastguard Worker #define IORING_POLL_ADD_LEVEL (1U << 3)
200*8d67ca89SAndroid Build Coastguard Worker #define IORING_ASYNC_CANCEL_ALL (1U << 0)
201*8d67ca89SAndroid Build Coastguard Worker #define IORING_ASYNC_CANCEL_FD (1U << 1)
202*8d67ca89SAndroid Build Coastguard Worker #define IORING_ASYNC_CANCEL_ANY (1U << 2)
203*8d67ca89SAndroid Build Coastguard Worker #define IORING_ASYNC_CANCEL_FD_FIXED (1U << 3)
204*8d67ca89SAndroid Build Coastguard Worker #define IORING_ASYNC_CANCEL_USERDATA (1U << 4)
205*8d67ca89SAndroid Build Coastguard Worker #define IORING_ASYNC_CANCEL_OP (1U << 5)
206*8d67ca89SAndroid Build Coastguard Worker #define IORING_RECVSEND_POLL_FIRST (1U << 0)
207*8d67ca89SAndroid Build Coastguard Worker #define IORING_RECV_MULTISHOT (1U << 1)
208*8d67ca89SAndroid Build Coastguard Worker #define IORING_RECVSEND_FIXED_BUF (1U << 2)
209*8d67ca89SAndroid Build Coastguard Worker #define IORING_SEND_ZC_REPORT_USAGE (1U << 3)
210*8d67ca89SAndroid Build Coastguard Worker #define IORING_RECVSEND_BUNDLE (1U << 4)
211*8d67ca89SAndroid Build Coastguard Worker #define IORING_NOTIF_USAGE_ZC_COPIED (1U << 31)
212*8d67ca89SAndroid Build Coastguard Worker #define IORING_ACCEPT_MULTISHOT (1U << 0)
213*8d67ca89SAndroid Build Coastguard Worker #define IORING_ACCEPT_DONTWAIT (1U << 1)
214*8d67ca89SAndroid Build Coastguard Worker #define IORING_ACCEPT_POLL_FIRST (1U << 2)
215*8d67ca89SAndroid Build Coastguard Worker enum io_uring_msg_ring_flags {
216*8d67ca89SAndroid Build Coastguard Worker   IORING_MSG_DATA,
217*8d67ca89SAndroid Build Coastguard Worker   IORING_MSG_SEND_FD,
218*8d67ca89SAndroid Build Coastguard Worker };
219*8d67ca89SAndroid Build Coastguard Worker #define IORING_MSG_RING_CQE_SKIP (1U << 0)
220*8d67ca89SAndroid Build Coastguard Worker #define IORING_MSG_RING_FLAGS_PASS (1U << 1)
221*8d67ca89SAndroid Build Coastguard Worker #define IORING_FIXED_FD_NO_CLOEXEC (1U << 0)
222*8d67ca89SAndroid Build Coastguard Worker #define IORING_NOP_INJECT_RESULT (1U << 0)
223*8d67ca89SAndroid Build Coastguard Worker struct io_uring_cqe {
224*8d67ca89SAndroid Build Coastguard Worker   __u64 user_data;
225*8d67ca89SAndroid Build Coastguard Worker   __s32 res;
226*8d67ca89SAndroid Build Coastguard Worker   __u32 flags;
227*8d67ca89SAndroid Build Coastguard Worker   __u64 big_cqe[];
228*8d67ca89SAndroid Build Coastguard Worker };
229*8d67ca89SAndroid Build Coastguard Worker #define IORING_CQE_F_BUFFER (1U << 0)
230*8d67ca89SAndroid Build Coastguard Worker #define IORING_CQE_F_MORE (1U << 1)
231*8d67ca89SAndroid Build Coastguard Worker #define IORING_CQE_F_SOCK_NONEMPTY (1U << 2)
232*8d67ca89SAndroid Build Coastguard Worker #define IORING_CQE_F_NOTIF (1U << 3)
233*8d67ca89SAndroid Build Coastguard Worker #define IORING_CQE_BUFFER_SHIFT 16
234*8d67ca89SAndroid Build Coastguard Worker #define IORING_OFF_SQ_RING 0ULL
235*8d67ca89SAndroid Build Coastguard Worker #define IORING_OFF_CQ_RING 0x8000000ULL
236*8d67ca89SAndroid Build Coastguard Worker #define IORING_OFF_SQES 0x10000000ULL
237*8d67ca89SAndroid Build Coastguard Worker #define IORING_OFF_PBUF_RING 0x80000000ULL
238*8d67ca89SAndroid Build Coastguard Worker #define IORING_OFF_PBUF_SHIFT 16
239*8d67ca89SAndroid Build Coastguard Worker #define IORING_OFF_MMAP_MASK 0xf8000000ULL
240*8d67ca89SAndroid Build Coastguard Worker struct io_sqring_offsets {
241*8d67ca89SAndroid Build Coastguard Worker   __u32 head;
242*8d67ca89SAndroid Build Coastguard Worker   __u32 tail;
243*8d67ca89SAndroid Build Coastguard Worker   __u32 ring_mask;
244*8d67ca89SAndroid Build Coastguard Worker   __u32 ring_entries;
245*8d67ca89SAndroid Build Coastguard Worker   __u32 flags;
246*8d67ca89SAndroid Build Coastguard Worker   __u32 dropped;
247*8d67ca89SAndroid Build Coastguard Worker   __u32 array;
248*8d67ca89SAndroid Build Coastguard Worker   __u32 resv1;
249*8d67ca89SAndroid Build Coastguard Worker   __u64 user_addr;
250*8d67ca89SAndroid Build Coastguard Worker };
251*8d67ca89SAndroid Build Coastguard Worker #define IORING_SQ_NEED_WAKEUP (1U << 0)
252*8d67ca89SAndroid Build Coastguard Worker #define IORING_SQ_CQ_OVERFLOW (1U << 1)
253*8d67ca89SAndroid Build Coastguard Worker #define IORING_SQ_TASKRUN (1U << 2)
254*8d67ca89SAndroid Build Coastguard Worker struct io_cqring_offsets {
255*8d67ca89SAndroid Build Coastguard Worker   __u32 head;
256*8d67ca89SAndroid Build Coastguard Worker   __u32 tail;
257*8d67ca89SAndroid Build Coastguard Worker   __u32 ring_mask;
258*8d67ca89SAndroid Build Coastguard Worker   __u32 ring_entries;
259*8d67ca89SAndroid Build Coastguard Worker   __u32 overflow;
260*8d67ca89SAndroid Build Coastguard Worker   __u32 cqes;
261*8d67ca89SAndroid Build Coastguard Worker   __u32 flags;
262*8d67ca89SAndroid Build Coastguard Worker   __u32 resv1;
263*8d67ca89SAndroid Build Coastguard Worker   __u64 user_addr;
264*8d67ca89SAndroid Build Coastguard Worker };
265*8d67ca89SAndroid Build Coastguard Worker #define IORING_CQ_EVENTFD_DISABLED (1U << 0)
266*8d67ca89SAndroid Build Coastguard Worker #define IORING_ENTER_GETEVENTS (1U << 0)
267*8d67ca89SAndroid Build Coastguard Worker #define IORING_ENTER_SQ_WAKEUP (1U << 1)
268*8d67ca89SAndroid Build Coastguard Worker #define IORING_ENTER_SQ_WAIT (1U << 2)
269*8d67ca89SAndroid Build Coastguard Worker #define IORING_ENTER_EXT_ARG (1U << 3)
270*8d67ca89SAndroid Build Coastguard Worker #define IORING_ENTER_REGISTERED_RING (1U << 4)
271*8d67ca89SAndroid Build Coastguard Worker struct io_uring_params {
272*8d67ca89SAndroid Build Coastguard Worker   __u32 sq_entries;
273*8d67ca89SAndroid Build Coastguard Worker   __u32 cq_entries;
274*8d67ca89SAndroid Build Coastguard Worker   __u32 flags;
275*8d67ca89SAndroid Build Coastguard Worker   __u32 sq_thread_cpu;
276*8d67ca89SAndroid Build Coastguard Worker   __u32 sq_thread_idle;
277*8d67ca89SAndroid Build Coastguard Worker   __u32 features;
278*8d67ca89SAndroid Build Coastguard Worker   __u32 wq_fd;
279*8d67ca89SAndroid Build Coastguard Worker   __u32 resv[3];
280*8d67ca89SAndroid Build Coastguard Worker   struct io_sqring_offsets sq_off;
281*8d67ca89SAndroid Build Coastguard Worker   struct io_cqring_offsets cq_off;
282*8d67ca89SAndroid Build Coastguard Worker };
283*8d67ca89SAndroid Build Coastguard Worker #define IORING_FEAT_SINGLE_MMAP (1U << 0)
284*8d67ca89SAndroid Build Coastguard Worker #define IORING_FEAT_NODROP (1U << 1)
285*8d67ca89SAndroid Build Coastguard Worker #define IORING_FEAT_SUBMIT_STABLE (1U << 2)
286*8d67ca89SAndroid Build Coastguard Worker #define IORING_FEAT_RW_CUR_POS (1U << 3)
287*8d67ca89SAndroid Build Coastguard Worker #define IORING_FEAT_CUR_PERSONALITY (1U << 4)
288*8d67ca89SAndroid Build Coastguard Worker #define IORING_FEAT_FAST_POLL (1U << 5)
289*8d67ca89SAndroid Build Coastguard Worker #define IORING_FEAT_POLL_32BITS (1U << 6)
290*8d67ca89SAndroid Build Coastguard Worker #define IORING_FEAT_SQPOLL_NONFIXED (1U << 7)
291*8d67ca89SAndroid Build Coastguard Worker #define IORING_FEAT_EXT_ARG (1U << 8)
292*8d67ca89SAndroid Build Coastguard Worker #define IORING_FEAT_NATIVE_WORKERS (1U << 9)
293*8d67ca89SAndroid Build Coastguard Worker #define IORING_FEAT_RSRC_TAGS (1U << 10)
294*8d67ca89SAndroid Build Coastguard Worker #define IORING_FEAT_CQE_SKIP (1U << 11)
295*8d67ca89SAndroid Build Coastguard Worker #define IORING_FEAT_LINKED_FILE (1U << 12)
296*8d67ca89SAndroid Build Coastguard Worker #define IORING_FEAT_REG_REG_RING (1U << 13)
297*8d67ca89SAndroid Build Coastguard Worker #define IORING_FEAT_RECVSEND_BUNDLE (1U << 14)
298*8d67ca89SAndroid Build Coastguard Worker enum io_uring_register_op {
299*8d67ca89SAndroid Build Coastguard Worker   IORING_REGISTER_BUFFERS = 0,
300*8d67ca89SAndroid Build Coastguard Worker   IORING_UNREGISTER_BUFFERS = 1,
301*8d67ca89SAndroid Build Coastguard Worker   IORING_REGISTER_FILES = 2,
302*8d67ca89SAndroid Build Coastguard Worker   IORING_UNREGISTER_FILES = 3,
303*8d67ca89SAndroid Build Coastguard Worker   IORING_REGISTER_EVENTFD = 4,
304*8d67ca89SAndroid Build Coastguard Worker   IORING_UNREGISTER_EVENTFD = 5,
305*8d67ca89SAndroid Build Coastguard Worker   IORING_REGISTER_FILES_UPDATE = 6,
306*8d67ca89SAndroid Build Coastguard Worker   IORING_REGISTER_EVENTFD_ASYNC = 7,
307*8d67ca89SAndroid Build Coastguard Worker   IORING_REGISTER_PROBE = 8,
308*8d67ca89SAndroid Build Coastguard Worker   IORING_REGISTER_PERSONALITY = 9,
309*8d67ca89SAndroid Build Coastguard Worker   IORING_UNREGISTER_PERSONALITY = 10,
310*8d67ca89SAndroid Build Coastguard Worker   IORING_REGISTER_RESTRICTIONS = 11,
311*8d67ca89SAndroid Build Coastguard Worker   IORING_REGISTER_ENABLE_RINGS = 12,
312*8d67ca89SAndroid Build Coastguard Worker   IORING_REGISTER_FILES2 = 13,
313*8d67ca89SAndroid Build Coastguard Worker   IORING_REGISTER_FILES_UPDATE2 = 14,
314*8d67ca89SAndroid Build Coastguard Worker   IORING_REGISTER_BUFFERS2 = 15,
315*8d67ca89SAndroid Build Coastguard Worker   IORING_REGISTER_BUFFERS_UPDATE = 16,
316*8d67ca89SAndroid Build Coastguard Worker   IORING_REGISTER_IOWQ_AFF = 17,
317*8d67ca89SAndroid Build Coastguard Worker   IORING_UNREGISTER_IOWQ_AFF = 18,
318*8d67ca89SAndroid Build Coastguard Worker   IORING_REGISTER_IOWQ_MAX_WORKERS = 19,
319*8d67ca89SAndroid Build Coastguard Worker   IORING_REGISTER_RING_FDS = 20,
320*8d67ca89SAndroid Build Coastguard Worker   IORING_UNREGISTER_RING_FDS = 21,
321*8d67ca89SAndroid Build Coastguard Worker   IORING_REGISTER_PBUF_RING = 22,
322*8d67ca89SAndroid Build Coastguard Worker   IORING_UNREGISTER_PBUF_RING = 23,
323*8d67ca89SAndroid Build Coastguard Worker   IORING_REGISTER_SYNC_CANCEL = 24,
324*8d67ca89SAndroid Build Coastguard Worker   IORING_REGISTER_FILE_ALLOC_RANGE = 25,
325*8d67ca89SAndroid Build Coastguard Worker   IORING_REGISTER_PBUF_STATUS = 26,
326*8d67ca89SAndroid Build Coastguard Worker   IORING_REGISTER_NAPI = 27,
327*8d67ca89SAndroid Build Coastguard Worker   IORING_UNREGISTER_NAPI = 28,
328*8d67ca89SAndroid Build Coastguard Worker   IORING_REGISTER_LAST,
329*8d67ca89SAndroid Build Coastguard Worker   IORING_REGISTER_USE_REGISTERED_RING = 1U << 31
330*8d67ca89SAndroid Build Coastguard Worker };
331*8d67ca89SAndroid Build Coastguard Worker enum io_wq_type {
332*8d67ca89SAndroid Build Coastguard Worker   IO_WQ_BOUND,
333*8d67ca89SAndroid Build Coastguard Worker   IO_WQ_UNBOUND,
334*8d67ca89SAndroid Build Coastguard Worker };
335*8d67ca89SAndroid Build Coastguard Worker struct io_uring_files_update {
336*8d67ca89SAndroid Build Coastguard Worker   __u32 offset;
337*8d67ca89SAndroid Build Coastguard Worker   __u32 resv;
338*8d67ca89SAndroid Build Coastguard Worker   __aligned_u64 fds;
339*8d67ca89SAndroid Build Coastguard Worker };
340*8d67ca89SAndroid Build Coastguard Worker #define IORING_RSRC_REGISTER_SPARSE (1U << 0)
341*8d67ca89SAndroid Build Coastguard Worker struct io_uring_rsrc_register {
342*8d67ca89SAndroid Build Coastguard Worker   __u32 nr;
343*8d67ca89SAndroid Build Coastguard Worker   __u32 flags;
344*8d67ca89SAndroid Build Coastguard Worker   __u64 resv2;
345*8d67ca89SAndroid Build Coastguard Worker   __aligned_u64 data;
346*8d67ca89SAndroid Build Coastguard Worker   __aligned_u64 tags;
347*8d67ca89SAndroid Build Coastguard Worker };
348*8d67ca89SAndroid Build Coastguard Worker struct io_uring_rsrc_update {
349*8d67ca89SAndroid Build Coastguard Worker   __u32 offset;
350*8d67ca89SAndroid Build Coastguard Worker   __u32 resv;
351*8d67ca89SAndroid Build Coastguard Worker   __aligned_u64 data;
352*8d67ca89SAndroid Build Coastguard Worker };
353*8d67ca89SAndroid Build Coastguard Worker struct io_uring_rsrc_update2 {
354*8d67ca89SAndroid Build Coastguard Worker   __u32 offset;
355*8d67ca89SAndroid Build Coastguard Worker   __u32 resv;
356*8d67ca89SAndroid Build Coastguard Worker   __aligned_u64 data;
357*8d67ca89SAndroid Build Coastguard Worker   __aligned_u64 tags;
358*8d67ca89SAndroid Build Coastguard Worker   __u32 nr;
359*8d67ca89SAndroid Build Coastguard Worker   __u32 resv2;
360*8d67ca89SAndroid Build Coastguard Worker };
361*8d67ca89SAndroid Build Coastguard Worker #define IORING_REGISTER_FILES_SKIP (- 2)
362*8d67ca89SAndroid Build Coastguard Worker #define IO_URING_OP_SUPPORTED (1U << 0)
363*8d67ca89SAndroid Build Coastguard Worker struct io_uring_probe_op {
364*8d67ca89SAndroid Build Coastguard Worker   __u8 op;
365*8d67ca89SAndroid Build Coastguard Worker   __u8 resv;
366*8d67ca89SAndroid Build Coastguard Worker   __u16 flags;
367*8d67ca89SAndroid Build Coastguard Worker   __u32 resv2;
368*8d67ca89SAndroid Build Coastguard Worker };
369*8d67ca89SAndroid Build Coastguard Worker struct io_uring_probe {
370*8d67ca89SAndroid Build Coastguard Worker   __u8 last_op;
371*8d67ca89SAndroid Build Coastguard Worker   __u8 ops_len;
372*8d67ca89SAndroid Build Coastguard Worker   __u16 resv;
373*8d67ca89SAndroid Build Coastguard Worker   __u32 resv2[3];
374*8d67ca89SAndroid Build Coastguard Worker   struct io_uring_probe_op ops[];
375*8d67ca89SAndroid Build Coastguard Worker };
376*8d67ca89SAndroid Build Coastguard Worker struct io_uring_restriction {
377*8d67ca89SAndroid Build Coastguard Worker   __u16 opcode;
378*8d67ca89SAndroid Build Coastguard Worker   union {
379*8d67ca89SAndroid Build Coastguard Worker     __u8 register_op;
380*8d67ca89SAndroid Build Coastguard Worker     __u8 sqe_op;
381*8d67ca89SAndroid Build Coastguard Worker     __u8 sqe_flags;
382*8d67ca89SAndroid Build Coastguard Worker   };
383*8d67ca89SAndroid Build Coastguard Worker   __u8 resv;
384*8d67ca89SAndroid Build Coastguard Worker   __u32 resv2[3];
385*8d67ca89SAndroid Build Coastguard Worker };
386*8d67ca89SAndroid Build Coastguard Worker struct io_uring_buf {
387*8d67ca89SAndroid Build Coastguard Worker   __u64 addr;
388*8d67ca89SAndroid Build Coastguard Worker   __u32 len;
389*8d67ca89SAndroid Build Coastguard Worker   __u16 bid;
390*8d67ca89SAndroid Build Coastguard Worker   __u16 resv;
391*8d67ca89SAndroid Build Coastguard Worker };
392*8d67ca89SAndroid Build Coastguard Worker struct io_uring_buf_ring {
393*8d67ca89SAndroid Build Coastguard Worker   union {
394*8d67ca89SAndroid Build Coastguard Worker     struct {
395*8d67ca89SAndroid Build Coastguard Worker       __u64 resv1;
396*8d67ca89SAndroid Build Coastguard Worker       __u32 resv2;
397*8d67ca89SAndroid Build Coastguard Worker       __u16 resv3;
398*8d67ca89SAndroid Build Coastguard Worker       __u16 tail;
399*8d67ca89SAndroid Build Coastguard Worker     };
400*8d67ca89SAndroid Build Coastguard Worker     __DECLARE_FLEX_ARRAY(struct io_uring_buf, bufs);
401*8d67ca89SAndroid Build Coastguard Worker   };
402*8d67ca89SAndroid Build Coastguard Worker };
403*8d67ca89SAndroid Build Coastguard Worker enum io_uring_register_pbuf_ring_flags {
404*8d67ca89SAndroid Build Coastguard Worker   IOU_PBUF_RING_MMAP = 1,
405*8d67ca89SAndroid Build Coastguard Worker };
406*8d67ca89SAndroid Build Coastguard Worker struct io_uring_buf_reg {
407*8d67ca89SAndroid Build Coastguard Worker   __u64 ring_addr;
408*8d67ca89SAndroid Build Coastguard Worker   __u32 ring_entries;
409*8d67ca89SAndroid Build Coastguard Worker   __u16 bgid;
410*8d67ca89SAndroid Build Coastguard Worker   __u16 flags;
411*8d67ca89SAndroid Build Coastguard Worker   __u64 resv[3];
412*8d67ca89SAndroid Build Coastguard Worker };
413*8d67ca89SAndroid Build Coastguard Worker struct io_uring_buf_status {
414*8d67ca89SAndroid Build Coastguard Worker   __u32 buf_group;
415*8d67ca89SAndroid Build Coastguard Worker   __u32 head;
416*8d67ca89SAndroid Build Coastguard Worker   __u32 resv[8];
417*8d67ca89SAndroid Build Coastguard Worker };
418*8d67ca89SAndroid Build Coastguard Worker struct io_uring_napi {
419*8d67ca89SAndroid Build Coastguard Worker   __u32 busy_poll_to;
420*8d67ca89SAndroid Build Coastguard Worker   __u8 prefer_busy_poll;
421*8d67ca89SAndroid Build Coastguard Worker   __u8 pad[3];
422*8d67ca89SAndroid Build Coastguard Worker   __u64 resv;
423*8d67ca89SAndroid Build Coastguard Worker };
424*8d67ca89SAndroid Build Coastguard Worker enum io_uring_register_restriction_op {
425*8d67ca89SAndroid Build Coastguard Worker   IORING_RESTRICTION_REGISTER_OP = 0,
426*8d67ca89SAndroid Build Coastguard Worker   IORING_RESTRICTION_SQE_OP = 1,
427*8d67ca89SAndroid Build Coastguard Worker   IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2,
428*8d67ca89SAndroid Build Coastguard Worker   IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3,
429*8d67ca89SAndroid Build Coastguard Worker   IORING_RESTRICTION_LAST
430*8d67ca89SAndroid Build Coastguard Worker };
431*8d67ca89SAndroid Build Coastguard Worker struct io_uring_getevents_arg {
432*8d67ca89SAndroid Build Coastguard Worker   __u64 sigmask;
433*8d67ca89SAndroid Build Coastguard Worker   __u32 sigmask_sz;
434*8d67ca89SAndroid Build Coastguard Worker   __u32 pad;
435*8d67ca89SAndroid Build Coastguard Worker   __u64 ts;
436*8d67ca89SAndroid Build Coastguard Worker };
437*8d67ca89SAndroid Build Coastguard Worker struct io_uring_sync_cancel_reg {
438*8d67ca89SAndroid Build Coastguard Worker   __u64 addr;
439*8d67ca89SAndroid Build Coastguard Worker   __s32 fd;
440*8d67ca89SAndroid Build Coastguard Worker   __u32 flags;
441*8d67ca89SAndroid Build Coastguard Worker   struct __kernel_timespec timeout;
442*8d67ca89SAndroid Build Coastguard Worker   __u8 opcode;
443*8d67ca89SAndroid Build Coastguard Worker   __u8 pad[7];
444*8d67ca89SAndroid Build Coastguard Worker   __u64 pad2[3];
445*8d67ca89SAndroid Build Coastguard Worker };
446*8d67ca89SAndroid Build Coastguard Worker struct io_uring_file_index_range {
447*8d67ca89SAndroid Build Coastguard Worker   __u32 off;
448*8d67ca89SAndroid Build Coastguard Worker   __u32 len;
449*8d67ca89SAndroid Build Coastguard Worker   __u64 resv;
450*8d67ca89SAndroid Build Coastguard Worker };
451*8d67ca89SAndroid Build Coastguard Worker struct io_uring_recvmsg_out {
452*8d67ca89SAndroid Build Coastguard Worker   __u32 namelen;
453*8d67ca89SAndroid Build Coastguard Worker   __u32 controllen;
454*8d67ca89SAndroid Build Coastguard Worker   __u32 payloadlen;
455*8d67ca89SAndroid Build Coastguard Worker   __u32 flags;
456*8d67ca89SAndroid Build Coastguard Worker };
457*8d67ca89SAndroid Build Coastguard Worker enum io_uring_socket_op {
458*8d67ca89SAndroid Build Coastguard Worker   SOCKET_URING_OP_SIOCINQ = 0,
459*8d67ca89SAndroid Build Coastguard Worker   SOCKET_URING_OP_SIOCOUTQ,
460*8d67ca89SAndroid Build Coastguard Worker   SOCKET_URING_OP_GETSOCKOPT,
461*8d67ca89SAndroid Build Coastguard Worker   SOCKET_URING_OP_SETSOCKOPT,
462*8d67ca89SAndroid Build Coastguard Worker };
463*8d67ca89SAndroid Build Coastguard Worker #ifdef __cplusplus
464*8d67ca89SAndroid Build Coastguard Worker }
465*8d67ca89SAndroid Build Coastguard Worker #endif
466*8d67ca89SAndroid Build Coastguard Worker #endif
467