summaryrefslogtreecommitdiffstats
path: root/vendor/rustix/src/backend/libc/mm/syscalls.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/rustix/src/backend/libc/mm/syscalls.rs')
-rw-r--r--vendor/rustix/src/backend/libc/mm/syscalls.rs46
1 files changed, 25 insertions, 21 deletions
diff --git a/vendor/rustix/src/backend/libc/mm/syscalls.rs b/vendor/rustix/src/backend/libc/mm/syscalls.rs
index 16636f1b9..4b23a58b7 100644
--- a/vendor/rustix/src/backend/libc/mm/syscalls.rs
+++ b/vendor/rustix/src/backend/libc/mm/syscalls.rs
@@ -1,19 +1,18 @@
//! libc syscalls supporting `rustix::mm`.
-use super::super::c;
-#[cfg(any(target_os = "android", target_os = "linux"))]
-use super::super::conv::syscall_ret_owned_fd;
-use super::super::conv::{borrowed_fd, no_fd, ret};
-use super::super::offset::libc_mmap;
#[cfg(not(target_os = "redox"))]
use super::types::Advice;
#[cfg(any(target_os = "emscripten", target_os = "linux"))]
use super::types::MremapFlags;
use super::types::{MapFlags, MprotectFlags, MsyncFlags, ProtFlags};
-#[cfg(any(target_os = "android", target_os = "linux"))]
+#[cfg(linux_kernel)]
use super::types::{MlockFlags, UserfaultfdFlags};
+use crate::backend::c;
+#[cfg(linux_kernel)]
+use crate::backend::conv::ret_owned_fd;
+use crate::backend::conv::{borrowed_fd, no_fd, ret};
use crate::fd::BorrowedFd;
-#[cfg(any(target_os = "android", target_os = "linux"))]
+#[cfg(linux_kernel)]
use crate::fd::OwnedFd;
use crate::io;
@@ -52,7 +51,7 @@ pub(crate) fn madvise(addr: *mut c::c_void, len: usize, advice: Advice) -> io::R
}
pub(crate) unsafe fn msync(addr: *mut c::c_void, len: usize, flags: MsyncFlags) -> io::Result<()> {
- let err = c::msync(addr, len, flags.bits());
+ let err = c::msync(addr, len, bitflags_bits!(flags));
// `msync` returns its error status rather than using `errno`.
if err == 0 {
@@ -74,11 +73,11 @@ pub(crate) unsafe fn mmap(
fd: BorrowedFd<'_>,
offset: u64,
) -> io::Result<*mut c::c_void> {
- let res = libc_mmap(
+ let res = c::mmap(
ptr,
len,
- prot.bits(),
- flags.bits(),
+ bitflags_bits!(prot),
+ bitflags_bits!(flags),
borrowed_fd(fd),
offset as i64,
);
@@ -99,11 +98,11 @@ pub(crate) unsafe fn mmap_anonymous(
prot: ProtFlags,
flags: MapFlags,
) -> io::Result<*mut c::c_void> {
- let res = libc_mmap(
+ let res = c::mmap(
ptr,
len,
- prot.bits(),
- flags.bits() | c::MAP_ANONYMOUS,
+ bitflags_bits!(prot),
+ bitflags_bits!(flags | MapFlags::from_bits_retain(bitcast!(c::MAP_ANONYMOUS))),
no_fd(),
0,
);
@@ -119,7 +118,7 @@ pub(crate) unsafe fn mprotect(
len: usize,
flags: MprotectFlags,
) -> io::Result<()> {
- ret(c::mprotect(ptr, len, flags.bits()))
+ ret(c::mprotect(ptr, len, bitflags_bits!(flags)))
}
pub(crate) unsafe fn munmap(ptr: *mut c::c_void, len: usize) -> io::Result<()> {
@@ -137,7 +136,7 @@ pub(crate) unsafe fn mremap(
new_size: usize,
flags: MremapFlags,
) -> io::Result<*mut c::c_void> {
- let res = c::mremap(old_address, old_size, new_size, flags.bits());
+ let res = c::mremap(old_address, old_size, new_size, bitflags_bits!(flags));
if res == c::MAP_FAILED {
Err(io::Errno::last_os_error())
} else {
@@ -162,7 +161,7 @@ pub(crate) unsafe fn mremap_fixed(
old_address,
old_size,
new_size,
- flags.bits() | c::MAP_FIXED,
+ bitflags_bits!(flags | MremapFlags::from_bits_retain(bitcast!(c::MAP_FIXED))),
new_address,
);
if res == c::MAP_FAILED {
@@ -185,7 +184,7 @@ pub(crate) unsafe fn mlock(addr: *mut c::c_void, length: usize) -> io::Result<()
///
/// `mlock_with` operates on raw pointers and may round out to the nearest page
/// boundaries.
-#[cfg(any(target_os = "android", target_os = "linux"))]
+#[cfg(linux_kernel)]
#[inline]
pub(crate) unsafe fn mlock_with(
addr: *mut c::c_void,
@@ -200,7 +199,7 @@ pub(crate) unsafe fn mlock_with(
) via SYS_mlock2 -> c::c_int
}
- ret(mlock2(addr, length, flags.bits()))
+ ret(mlock2(addr, length, bitflags_bits!(flags)))
}
/// # Safety
@@ -212,7 +211,12 @@ pub(crate) unsafe fn munlock(addr: *mut c::c_void, length: usize) -> io::Result<
ret(c::munlock(addr, length))
}
-#[cfg(any(target_os = "android", target_os = "linux"))]
+#[cfg(linux_kernel)]
pub(crate) unsafe fn userfaultfd(flags: UserfaultfdFlags) -> io::Result<OwnedFd> {
- syscall_ret_owned_fd(c::syscall(c::SYS_userfaultfd, flags.bits()))
+ syscall! {
+ fn userfaultfd(
+ flags: c::c_int
+ ) via SYS_userfaultfd -> c::c_int
+ }
+ ret_owned_fd(userfaultfd(bitflags_bits!(flags)))
}