diff --git a/src/backend/libc/fs/syscalls.rs b/src/backend/libc/fs/syscalls.rs index 07000f3dc..4c04ffad8 100644 --- a/src/backend/libc/fs/syscalls.rs +++ b/src/backend/libc/fs/syscalls.rs @@ -1868,7 +1868,7 @@ pub(crate) fn memfd_create(name: &CStr, flags: MemfdFlags) -> io::Result, path: &CStr, @@ -1876,8 +1876,18 @@ pub(crate) fn openat2( mode: Mode, resolve: ResolveFlags, ) -> io::Result { + #[cfg(linux_raw_dep)] use linux_raw_sys::general::open_how; + #[cfg(not(linux_raw_dep))] + #[repr(C)] + #[derive(Debug, Copy, Clone)] + struct open_how { + flags: u64, + mode: u64, + resolve: u64, + } + syscall! { fn openat2( base_dirfd: c::c_int, diff --git a/src/fs/mod.rs b/src/fs/mod.rs index baf9d7e14..ccac0486e 100644 --- a/src/fs/mod.rs +++ b/src/fs/mod.rs @@ -46,7 +46,7 @@ mod ioctl; mod makedev; #[cfg(any(linux_kernel, target_os = "freebsd"))] mod memfd_create; -#[cfg(linux_raw_dep)] +#[cfg(linux_kernel)] mod openat2; #[cfg(linux_kernel)] mod raw_dir; @@ -112,7 +112,7 @@ pub use ioctl::*; pub use makedev::*; #[cfg(any(linux_kernel, target_os = "freebsd"))] pub use memfd_create::memfd_create; -#[cfg(linux_raw_dep)] +#[cfg(linux_kernel)] pub use openat2::openat2; #[cfg(linux_kernel)] pub use raw_dir::{RawDir, RawDirEntry}; diff --git a/tests/fs/main.rs b/tests/fs/main.rs index 84ac2aef3..869190df6 100644 --- a/tests/fs/main.rs +++ b/tests/fs/main.rs @@ -34,7 +34,7 @@ mod mknodat; mod negative_timestamp; #[cfg(linux_kernel)] mod openat; -#[cfg(linux_raw_dep)] +#[cfg(linux_kernel)] mod openat2; #[cfg(not(target_os = "redox"))] mod readdir;