From e2239016d4839aeb54b5da61f94baf0d518233fb Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Tue, 8 Jan 2019 06:20:58 -0700 Subject: io_uring: use kernel header directly The kernel header has been designed as such that it doesn't require a special userland version of it. Use it directly. Signed-off-by: Jens Axboe --- os/io_uring.h | 78 +++++++++++++++++++++++++++++++++++------------------------ 1 file changed, 46 insertions(+), 32 deletions(-) (limited to 'os') diff --git a/os/io_uring.h b/os/io_uring.h index 8dda7951..7dd21126 100644 --- a/os/io_uring.h +++ b/os/io_uring.h @@ -1,25 +1,33 @@ -#ifndef IO_URING_H -#define IO_URING_H +/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ +/* + * Header file for the io_uring interface. + * + * Copyright (C) 2019 Jens Axboe + * Copyright (C) 2019 Christoph Hellwig + */ +#ifndef LINUX_IO_URING_H +#define LINUX_IO_URING_H #include +#include /* * IO submission data structure */ struct io_uring_iocb { - u8 opcode; - u8 flags; - u16 ioprio; - s32 fd; - u64 off; + __u8 opcode; + __u8 flags; + __u16 ioprio; + __s32 fd; + __u64 off; union { void *addr; - u64 __pad; + __u64 __pad; }; - u32 len; + __u32 len; union { __kernel_rwf_t rw_flags; - u32 __resv; + __u32 __resv; }; }; @@ -44,10 +52,13 @@ struct io_uring_iocb { */ struct io_uring_event { __u64 index; /* what iocb this event came from */ - s32 res; /* result code for this event */ - u32 flags; + __s32 res; /* result code for this event */ + __u32 flags; }; +/* + * io_uring_event->flags + */ #define IOEV_FLAG_CACHEHIT (1 << 0) /* IO did not hit media */ /* @@ -61,39 +72,42 @@ struct io_uring_event { * Filled with the offset for mmap(2) */ struct io_sqring_offsets { - u32 head; - u32 tail; - u32 ring_mask; - u32 ring_entries; - u32 flags; - u32 dropped; - u32 array; - u32 resv[3]; + __u32 head; + __u32 tail; + __u32 ring_mask; + __u32 ring_entries; + __u32 flags; + __u32 dropped; + __u32 array; + __u32 resv[3]; }; #define IORING_SQ_NEED_WAKEUP (1 << 0) /* needs io_uring_enter wakeup */ struct io_cqring_offsets { - u32 head; - u32 tail; - u32 ring_mask; - u32 ring_entries; - u32 overflow; - u32 events; - u32 resv[4]; + __u32 head; + __u32 tail; + __u32 ring_mask; + __u32 ring_entries; + __u32 overflow; + __u32 events; + __u32 resv[4]; }; +/* + * io_uring_enter(2) flags + */ #define IORING_ENTER_GETEVENTS (1 << 0) /* * Passed in for io_uring_setup(2). Copied back with updated info on success */ struct io_uring_params { - u32 sq_entries; - u32 cq_entries; - u32 flags; - u16 sq_thread_cpu; - u16 resv[9]; + __u32 sq_entries; + __u32 cq_entries; + __u32 flags; + __u16 sq_thread_cpu; + __u16 resv[9]; struct io_sqring_offsets sq_off; struct io_cqring_offsets cq_off; }; -- cgit v1.2.3