122851890Sopenharmony_ci/**************************************************************************** 222851890Sopenharmony_ci **************************************************************************** 322851890Sopenharmony_ci *** 422851890Sopenharmony_ci *** This header was automatically generated from a Linux kernel header 522851890Sopenharmony_ci *** of the same name, to make information necessary for userspace to 622851890Sopenharmony_ci *** call into the kernel available to libc. It contains only constants, 722851890Sopenharmony_ci *** structures, and macros generated from the original header, and thus, 822851890Sopenharmony_ci *** contains no copyrightable information. 922851890Sopenharmony_ci *** 1022851890Sopenharmony_ci *** To edit the content of this header, modify the corresponding 1122851890Sopenharmony_ci *** source file (e.g. under external/kernel-headers/original/) then 1222851890Sopenharmony_ci *** run bionic/libc/kernel/tools/update_all.py 1322851890Sopenharmony_ci *** 1422851890Sopenharmony_ci *** Any manual change here will be lost the next time this script will 1522851890Sopenharmony_ci *** be run. You've been warned! 1622851890Sopenharmony_ci *** 1722851890Sopenharmony_ci **************************************************************************** 1822851890Sopenharmony_ci ****************************************************************************/ 1922851890Sopenharmony_ci#ifndef LINUX_IO_URING_H 2022851890Sopenharmony_ci#define LINUX_IO_URING_H 2122851890Sopenharmony_ci#include <linux/fs.h> 2222851890Sopenharmony_ci#include <linux/types.h> 2322851890Sopenharmony_cistruct io_uring_sqe { 2422851890Sopenharmony_ci __u8 opcode; 2522851890Sopenharmony_ci __u8 flags; 2622851890Sopenharmony_ci __u16 ioprio; 2722851890Sopenharmony_ci __s32 fd; 2822851890Sopenharmony_ci union { 2922851890Sopenharmony_ci __u64 off; 3022851890Sopenharmony_ci __u64 addr2; 3122851890Sopenharmony_ci }; 3222851890Sopenharmony_ci union { 3322851890Sopenharmony_ci __u64 addr; 3422851890Sopenharmony_ci __u64 splice_off_in; 3522851890Sopenharmony_ci }; 3622851890Sopenharmony_ci __u32 len; 3722851890Sopenharmony_ci union { 3822851890Sopenharmony_ci __kernel_rwf_t rw_flags; 3922851890Sopenharmony_ci __u32 fsync_flags; 4022851890Sopenharmony_ci __u16 poll_events; 4122851890Sopenharmony_ci __u32 poll32_events; 4222851890Sopenharmony_ci __u32 sync_range_flags; 4322851890Sopenharmony_ci __u32 msg_flags; 4422851890Sopenharmony_ci __u32 timeout_flags; 4522851890Sopenharmony_ci __u32 accept_flags; 4622851890Sopenharmony_ci __u32 cancel_flags; 4722851890Sopenharmony_ci __u32 open_flags; 4822851890Sopenharmony_ci __u32 statx_flags; 4922851890Sopenharmony_ci __u32 fadvise_advice; 5022851890Sopenharmony_ci __u32 splice_flags; 5122851890Sopenharmony_ci }; 5222851890Sopenharmony_ci __u64 user_data; 5322851890Sopenharmony_ci union { 5422851890Sopenharmony_ci struct { 5522851890Sopenharmony_ci union { 5622851890Sopenharmony_ci __u16 buf_index; 5722851890Sopenharmony_ci __u16 buf_group; 5822851890Sopenharmony_ci } __attribute__((packed)); 5922851890Sopenharmony_ci __u16 personality; 6022851890Sopenharmony_ci __s32 splice_fd_in; 6122851890Sopenharmony_ci }; 6222851890Sopenharmony_ci __u64 __pad2[3]; 6322851890Sopenharmony_ci }; 6422851890Sopenharmony_ci}; 6522851890Sopenharmony_cienum { 6622851890Sopenharmony_ci IOSQE_FIXED_FILE_BIT, 6722851890Sopenharmony_ci IOSQE_IO_DRAIN_BIT, 6822851890Sopenharmony_ci IOSQE_IO_LINK_BIT, 6922851890Sopenharmony_ci IOSQE_IO_HARDLINK_BIT, 7022851890Sopenharmony_ci IOSQE_ASYNC_BIT, 7122851890Sopenharmony_ci IOSQE_BUFFER_SELECT_BIT, 7222851890Sopenharmony_ci}; 7322851890Sopenharmony_ci#define IOSQE_FIXED_FILE (1U << IOSQE_FIXED_FILE_BIT) 7422851890Sopenharmony_ci#define IOSQE_IO_DRAIN (1U << IOSQE_IO_DRAIN_BIT) 7522851890Sopenharmony_ci#define IOSQE_IO_LINK (1U << IOSQE_IO_LINK_BIT) 7622851890Sopenharmony_ci#define IOSQE_IO_HARDLINK (1U << IOSQE_IO_HARDLINK_BIT) 7722851890Sopenharmony_ci#define IOSQE_ASYNC (1U << IOSQE_ASYNC_BIT) 7822851890Sopenharmony_ci#define IOSQE_BUFFER_SELECT (1U << IOSQE_BUFFER_SELECT_BIT) 7922851890Sopenharmony_ci#define IORING_SETUP_IOPOLL (1U << 0) 8022851890Sopenharmony_ci#define IORING_SETUP_SQPOLL (1U << 1) 8122851890Sopenharmony_ci#define IORING_SETUP_SQ_AFF (1U << 2) 8222851890Sopenharmony_ci#define IORING_SETUP_CQSIZE (1U << 3) 8322851890Sopenharmony_ci#define IORING_SETUP_CLAMP (1U << 4) 8422851890Sopenharmony_ci#define IORING_SETUP_ATTACH_WQ (1U << 5) 8522851890Sopenharmony_ci#define IORING_SETUP_R_DISABLED (1U << 6) 8622851890Sopenharmony_cienum { 8722851890Sopenharmony_ci IORING_OP_NOP, 8822851890Sopenharmony_ci IORING_OP_READV, 8922851890Sopenharmony_ci IORING_OP_WRITEV, 9022851890Sopenharmony_ci IORING_OP_FSYNC, 9122851890Sopenharmony_ci IORING_OP_READ_FIXED, 9222851890Sopenharmony_ci IORING_OP_WRITE_FIXED, 9322851890Sopenharmony_ci IORING_OP_POLL_ADD, 9422851890Sopenharmony_ci IORING_OP_POLL_REMOVE, 9522851890Sopenharmony_ci IORING_OP_SYNC_FILE_RANGE, 9622851890Sopenharmony_ci IORING_OP_SENDMSG, 9722851890Sopenharmony_ci IORING_OP_RECVMSG, 9822851890Sopenharmony_ci IORING_OP_TIMEOUT, 9922851890Sopenharmony_ci IORING_OP_TIMEOUT_REMOVE, 10022851890Sopenharmony_ci IORING_OP_ACCEPT, 10122851890Sopenharmony_ci IORING_OP_ASYNC_CANCEL, 10222851890Sopenharmony_ci IORING_OP_LINK_TIMEOUT, 10322851890Sopenharmony_ci IORING_OP_CONNECT, 10422851890Sopenharmony_ci IORING_OP_FALLOCATE, 10522851890Sopenharmony_ci IORING_OP_OPENAT, 10622851890Sopenharmony_ci IORING_OP_CLOSE, 10722851890Sopenharmony_ci IORING_OP_FILES_UPDATE, 10822851890Sopenharmony_ci IORING_OP_STATX, 10922851890Sopenharmony_ci IORING_OP_READ, 11022851890Sopenharmony_ci IORING_OP_WRITE, 11122851890Sopenharmony_ci IORING_OP_FADVISE, 11222851890Sopenharmony_ci IORING_OP_MADVISE, 11322851890Sopenharmony_ci IORING_OP_SEND, 11422851890Sopenharmony_ci IORING_OP_RECV, 11522851890Sopenharmony_ci IORING_OP_OPENAT2, 11622851890Sopenharmony_ci IORING_OP_EPOLL_CTL, 11722851890Sopenharmony_ci IORING_OP_SPLICE, 11822851890Sopenharmony_ci IORING_OP_PROVIDE_BUFFERS, 11922851890Sopenharmony_ci IORING_OP_REMOVE_BUFFERS, 12022851890Sopenharmony_ci IORING_OP_TEE, 12122851890Sopenharmony_ci IORING_OP_LAST, 12222851890Sopenharmony_ci}; 12322851890Sopenharmony_ci#define IORING_FSYNC_DATASYNC (1U << 0) 12422851890Sopenharmony_ci#define IORING_TIMEOUT_ABS (1U << 0) 12522851890Sopenharmony_ci#define SPLICE_F_FD_IN_FIXED (1U << 31) 12622851890Sopenharmony_cistruct io_uring_cqe { 12722851890Sopenharmony_ci __u64 user_data; 12822851890Sopenharmony_ci __s32 res; 12922851890Sopenharmony_ci __u32 flags; 13022851890Sopenharmony_ci}; 13122851890Sopenharmony_ci#define IORING_CQE_F_BUFFER (1U << 0) 13222851890Sopenharmony_cienum { 13322851890Sopenharmony_ci IORING_CQE_BUFFER_SHIFT = 16, 13422851890Sopenharmony_ci}; 13522851890Sopenharmony_ci#define IORING_OFF_SQ_RING 0ULL 13622851890Sopenharmony_ci#define IORING_OFF_CQ_RING 0x8000000ULL 13722851890Sopenharmony_ci#define IORING_OFF_SQES 0x10000000ULL 13822851890Sopenharmony_cistruct io_sqring_offsets { 13922851890Sopenharmony_ci __u32 head; 14022851890Sopenharmony_ci __u32 tail; 14122851890Sopenharmony_ci __u32 ring_mask; 14222851890Sopenharmony_ci __u32 ring_entries; 14322851890Sopenharmony_ci __u32 flags; 14422851890Sopenharmony_ci __u32 dropped; 14522851890Sopenharmony_ci __u32 array; 14622851890Sopenharmony_ci __u32 resv1; 14722851890Sopenharmony_ci __u64 resv2; 14822851890Sopenharmony_ci}; 14922851890Sopenharmony_ci#define IORING_SQ_NEED_WAKEUP (1U << 0) 15022851890Sopenharmony_ci#define IORING_SQ_CQ_OVERFLOW (1U << 1) 15122851890Sopenharmony_cistruct io_cqring_offsets { 15222851890Sopenharmony_ci __u32 head; 15322851890Sopenharmony_ci __u32 tail; 15422851890Sopenharmony_ci __u32 ring_mask; 15522851890Sopenharmony_ci __u32 ring_entries; 15622851890Sopenharmony_ci __u32 overflow; 15722851890Sopenharmony_ci __u32 cqes; 15822851890Sopenharmony_ci __u32 flags; 15922851890Sopenharmony_ci __u32 resv1; 16022851890Sopenharmony_ci __u64 resv2; 16122851890Sopenharmony_ci}; 16222851890Sopenharmony_ci#define IORING_CQ_EVENTFD_DISABLED (1U << 0) 16322851890Sopenharmony_ci#define IORING_ENTER_GETEVENTS (1U << 0) 16422851890Sopenharmony_ci#define IORING_ENTER_SQ_WAKEUP (1U << 1) 16522851890Sopenharmony_ci#define IORING_ENTER_SQ_WAIT (1U << 2) 16622851890Sopenharmony_cistruct io_uring_params { 16722851890Sopenharmony_ci __u32 sq_entries; 16822851890Sopenharmony_ci __u32 cq_entries; 16922851890Sopenharmony_ci __u32 flags; 17022851890Sopenharmony_ci __u32 sq_thread_cpu; 17122851890Sopenharmony_ci __u32 sq_thread_idle; 17222851890Sopenharmony_ci __u32 features; 17322851890Sopenharmony_ci __u32 wq_fd; 17422851890Sopenharmony_ci __u32 resv[3]; 17522851890Sopenharmony_ci struct io_sqring_offsets sq_off; 17622851890Sopenharmony_ci struct io_cqring_offsets cq_off; 17722851890Sopenharmony_ci}; 17822851890Sopenharmony_ci#define IORING_FEAT_SINGLE_MMAP (1U << 0) 17922851890Sopenharmony_ci#define IORING_FEAT_NODROP (1U << 1) 18022851890Sopenharmony_ci#define IORING_FEAT_SUBMIT_STABLE (1U << 2) 18122851890Sopenharmony_ci#define IORING_FEAT_RW_CUR_POS (1U << 3) 18222851890Sopenharmony_ci#define IORING_FEAT_CUR_PERSONALITY (1U << 4) 18322851890Sopenharmony_ci#define IORING_FEAT_FAST_POLL (1U << 5) 18422851890Sopenharmony_ci#define IORING_FEAT_POLL_32BITS (1U << 6) 18522851890Sopenharmony_cienum { 18622851890Sopenharmony_ci IORING_REGISTER_BUFFERS = 0, 18722851890Sopenharmony_ci IORING_UNREGISTER_BUFFERS = 1, 18822851890Sopenharmony_ci IORING_REGISTER_FILES = 2, 18922851890Sopenharmony_ci IORING_UNREGISTER_FILES = 3, 19022851890Sopenharmony_ci IORING_REGISTER_EVENTFD = 4, 19122851890Sopenharmony_ci IORING_UNREGISTER_EVENTFD = 5, 19222851890Sopenharmony_ci IORING_REGISTER_FILES_UPDATE = 6, 19322851890Sopenharmony_ci IORING_REGISTER_EVENTFD_ASYNC = 7, 19422851890Sopenharmony_ci IORING_REGISTER_PROBE = 8, 19522851890Sopenharmony_ci IORING_REGISTER_PERSONALITY = 9, 19622851890Sopenharmony_ci IORING_UNREGISTER_PERSONALITY = 10, 19722851890Sopenharmony_ci IORING_REGISTER_RESTRICTIONS = 11, 19822851890Sopenharmony_ci IORING_REGISTER_ENABLE_RINGS = 12, 19922851890Sopenharmony_ci IORING_REGISTER_LAST 20022851890Sopenharmony_ci}; 20122851890Sopenharmony_cistruct io_uring_files_update { 20222851890Sopenharmony_ci __u32 offset; 20322851890Sopenharmony_ci __u32 resv; 20422851890Sopenharmony_ci __aligned_u64 fds; 20522851890Sopenharmony_ci}; 20622851890Sopenharmony_ci#define IO_URING_OP_SUPPORTED (1U << 0) 20722851890Sopenharmony_cistruct io_uring_probe_op { 20822851890Sopenharmony_ci __u8 op; 20922851890Sopenharmony_ci __u8 resv; 21022851890Sopenharmony_ci __u16 flags; 21122851890Sopenharmony_ci __u32 resv2; 21222851890Sopenharmony_ci}; 21322851890Sopenharmony_cistruct io_uring_probe { 21422851890Sopenharmony_ci __u8 last_op; 21522851890Sopenharmony_ci __u8 ops_len; 21622851890Sopenharmony_ci __u16 resv; 21722851890Sopenharmony_ci __u32 resv2[3]; 21822851890Sopenharmony_ci struct io_uring_probe_op ops[0]; 21922851890Sopenharmony_ci}; 22022851890Sopenharmony_cistruct io_uring_restriction { 22122851890Sopenharmony_ci __u16 opcode; 22222851890Sopenharmony_ci union { 22322851890Sopenharmony_ci __u8 register_op; 22422851890Sopenharmony_ci __u8 sqe_op; 22522851890Sopenharmony_ci __u8 sqe_flags; 22622851890Sopenharmony_ci }; 22722851890Sopenharmony_ci __u8 resv; 22822851890Sopenharmony_ci __u32 resv2[3]; 22922851890Sopenharmony_ci}; 23022851890Sopenharmony_cienum { 23122851890Sopenharmony_ci IORING_RESTRICTION_REGISTER_OP = 0, 23222851890Sopenharmony_ci IORING_RESTRICTION_SQE_OP = 1, 23322851890Sopenharmony_ci IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2, 23422851890Sopenharmony_ci IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3, 23522851890Sopenharmony_ci IORING_RESTRICTION_LAST 23622851890Sopenharmony_ci}; 23722851890Sopenharmony_ci#endif 238