diff options
Diffstat (limited to 'vendor/rustix/tests/mm/mmap.rs')
-rw-r--r-- | vendor/rustix/tests/mm/mmap.rs | 163 |
1 files changed, 0 insertions, 163 deletions
diff --git a/vendor/rustix/tests/mm/mmap.rs b/vendor/rustix/tests/mm/mmap.rs deleted file mode 100644 index 6b27287d7..000000000 --- a/vendor/rustix/tests/mm/mmap.rs +++ /dev/null @@ -1,163 +0,0 @@ -#![cfg(not(target_os = "wasi"))] - -#[cfg(feature = "fs")] -#[cfg(not(target_os = "redox"))] -#[test] -fn test_mmap() { - use rustix::fs::{cwd, openat, Mode, OFlags}; - use rustix::io::write; - use rustix::mm::{mmap, munmap, MapFlags, ProtFlags}; - use std::ptr::null_mut; - use std::slice; - - let tmp = tempfile::tempdir().unwrap(); - let dir = openat(cwd(), tmp.path(), OFlags::RDONLY, Mode::empty()).unwrap(); - - let file = openat( - &dir, - "foo", - OFlags::CREATE | OFlags::WRONLY | OFlags::TRUNC, - Mode::RUSR, - ) - .unwrap(); - write(&file, &[b'a'; 8192]).unwrap(); - drop(file); - - let file = openat(&dir, "foo", OFlags::RDONLY, Mode::empty()).unwrap(); - unsafe { - let addr = mmap( - null_mut(), - 8192, - ProtFlags::READ, - MapFlags::PRIVATE, - &file, - 0, - ) - .unwrap(); - let slice = slice::from_raw_parts(addr.cast::<u8>(), 8192); - assert_eq!(slice, &[b'a'; 8192]); - - munmap(addr, 8192).unwrap(); - } - - let file = openat(&dir, "foo", OFlags::RDONLY, Mode::empty()).unwrap(); - unsafe { - assert_eq!( - mmap( - null_mut(), - 8192, - ProtFlags::READ, - MapFlags::PRIVATE, - &file, - u64::MAX, - ) - .unwrap_err() - .raw_os_error(), - libc::EINVAL - ); - } -} - -#[test] -fn test_mmap_anonymous() { - use rustix::mm::{mmap_anonymous, munmap, MapFlags, ProtFlags}; - use std::ptr::null_mut; - use std::slice; - - unsafe { - let addr = mmap_anonymous(null_mut(), 8192, ProtFlags::READ, MapFlags::PRIVATE).unwrap(); - let slice = slice::from_raw_parts(addr.cast::<u8>(), 8192); - assert_eq!(slice, &[b'\0'; 8192]); - - munmap(addr, 8192).unwrap(); - } -} - -#[test] -fn test_mprotect() { - use rustix::mm::{mmap_anonymous, mprotect, munmap, MapFlags, MprotectFlags, ProtFlags}; - use std::ptr::null_mut; - use std::slice; - - unsafe { - let addr = mmap_anonymous(null_mut(), 8192, ProtFlags::READ, MapFlags::PRIVATE).unwrap(); - - mprotect(addr, 8192, MprotectFlags::empty()).unwrap(); - mprotect(addr, 8192, MprotectFlags::READ).unwrap(); - - let slice = slice::from_raw_parts(addr.cast::<u8>(), 8192); - assert_eq!(slice, &[b'\0'; 8192]); - - munmap(addr, 8192).unwrap(); - } -} - -#[test] -fn test_mlock() { - use rustix::mm::{mlock, mmap_anonymous, munlock, munmap, MapFlags, ProtFlags}; - #[cfg(any(target_os = "android", target_os = "linux"))] - use rustix::mm::{mlock_with, MlockFlags}; - use std::ptr::null_mut; - - unsafe { - let addr = mmap_anonymous(null_mut(), 8192, ProtFlags::READ, MapFlags::PRIVATE).unwrap(); - - mlock(addr, 8192).unwrap(); - munlock(addr, 8192).unwrap(); - - #[cfg(any(target_os = "android", target_os = "linux"))] - { - match mlock_with(addr, 8192, MlockFlags::empty()) { - Err(rustix::io::Errno::NOSYS) => (), - Err(err) => Err(err).unwrap(), - Ok(()) => munlock(addr, 8192).unwrap(), - } - - #[cfg(linux_raw)] // libc doesn't expose `MLOCK_UNFAULT` yet. - { - match mlock_with(addr, 8192, MlockFlags::ONFAULT) { - Err(rustix::io::Errno::NOSYS) => (), - Err(err) => Err(err).unwrap(), - Ok(()) => munlock(addr, 8192).unwrap(), - } - munlock(addr, 8192).unwrap(); - } - } - - munmap(addr, 8192).unwrap(); - } -} - -#[cfg(not(target_os = "redox"))] -#[test] -fn test_madvise() { - use rustix::mm::{madvise, mmap_anonymous, munmap, Advice, MapFlags, ProtFlags}; - use std::ptr::null_mut; - - unsafe { - let addr = mmap_anonymous(null_mut(), 8192, ProtFlags::READ, MapFlags::PRIVATE).unwrap(); - - madvise(addr, 8192, Advice::Normal).unwrap(); - madvise(addr, 8192, Advice::DontNeed).unwrap(); - - #[cfg(any(target_os = "android", target_os = "linux"))] - madvise(addr, 8192, Advice::LinuxDontNeed).unwrap(); - - munmap(addr, 8192).unwrap(); - } -} - -#[test] -fn test_msync() { - use rustix::mm::{mmap_anonymous, msync, munmap, MapFlags, MsyncFlags, ProtFlags}; - use std::ptr::null_mut; - - unsafe { - let addr = mmap_anonymous(null_mut(), 8192, ProtFlags::READ, MapFlags::PRIVATE).unwrap(); - - msync(addr, 8192, MsyncFlags::SYNC).unwrap(); - msync(addr, 8192, MsyncFlags::ASYNC).unwrap(); - - munmap(addr, 8192).unwrap(); - } -} |