From 389d1ed3138f74a042fa6f6e177f1a03cc5de023 Mon Sep 17 00:00:00 2001 From: David Carlier Date: Mon, 18 Dec 2023 13:44:28 +0000 Subject: [PATCH] adding iocb data for io_submit syscall for linux/glibc. close #3485 --- libc-test/build.rs | 1 + libc-test/semver/linux-gnu.txt | 1 + src/unix/linux_like/linux/gnu/mod.rs | 22 ++++++++++++++++++++++ 3 files changed, 24 insertions(+) diff --git a/libc-test/build.rs b/libc-test/build.rs index a9d04ca81cc15..3b50438c6c672 100644 --- a/libc-test/build.rs +++ b/libc-test/build.rs @@ -3406,6 +3406,7 @@ fn test_linux(target: &str) { headers! { cfg: "asm/mman.h", + [gnu]: "linux/aio_abi.h", "linux/can.h", "linux/can/raw.h", // FIXME: requires kernel headers >= 5.4.1. diff --git a/libc-test/semver/linux-gnu.txt b/libc-test/semver/linux-gnu.txt index 591b2447dbab7..9bbdee0771b60 100644 --- a/libc-test/semver/linux-gnu.txt +++ b/libc-test/semver/linux-gnu.txt @@ -638,6 +638,7 @@ glob64 glob64_t globfree globfree64 +iocb lio_listio mallinfo mallinfo2 diff --git a/src/unix/linux_like/linux/gnu/mod.rs b/src/unix/linux_like/linux/gnu/mod.rs index 3ee3d62667956..9af519e9077df 100644 --- a/src/unix/linux_like/linux/gnu/mod.rs +++ b/src/unix/linux_like/linux/gnu/mod.rs @@ -3,6 +3,7 @@ pub type __priority_which_t = ::c_uint; pub type __rlimit_resource_t = ::c_uint; pub type Lmid_t = ::c_long; pub type regoff_t = ::c_int; +pub type __kernel_rwf_t = ::c_int; cfg_if! { if #[cfg(doc)] { @@ -432,6 +433,27 @@ s! { pub len: ::__u32, pub options: ::__u32, } + + pub struct iocb { + pub aio_data: ::__u64, + #[cfg(target_endian = "little")] + pub aio_key: ::__u32, + #[cfg(target_endian = "little")] + pub aio_rw_flags: ::__kernel_rwf_t, + #[cfg(target_endian = "big")] + pub aio_rw_flags: ::__kernel_rwf_t, + #[cfg(target_endian = "big")] + pub aio_key: ::__u32, + pub aio_lio_opcode: ::__u16, + pub aio_reqprio: ::__s16, + pub aio_fildes: ::__u32, + pub aio_buf: ::__u64, + pub aio_nbytes: ::__u64, + pub aio_offset: ::__s64, + aio_reserved2: ::__u64, + pub aio_flags: ::__u32, + pub aio_resfd: ::__u32, + } } impl siginfo_t {