diff --git a/changelog/2499.added.md b/changelog/2499.added.md new file mode 100644 index 0000000000..cc2f5fdb0a --- /dev/null +++ b/changelog/2499.added.md @@ -0,0 +1 @@ +`MAP_SHARED_VALIDATE` was added for all linux targets. & `MAP_SYNC` was added for linux with the exclusion of mips architecures, and uclibc diff --git a/src/sys/mman.rs b/src/sys/mman.rs index a64f14f588..305061f2c3 100644 --- a/src/sys/mman.rs +++ b/src/sys/mman.rs @@ -41,6 +41,9 @@ libc_bitflags! { MAP_FILE; /// Share this mapping. Mutually exclusive with `MAP_PRIVATE`. MAP_SHARED; + /// Force mmap to check and fail on unknown flags. This also enables `MAP_SYNC`. + #[cfg(target_os = "linux")] + MAP_SHARED_VALIDATE; /// Create a private copy-on-write mapping. Mutually exclusive with `MAP_SHARED`. MAP_PRIVATE; /// Place the mapping at exactly the address specified in `addr`. @@ -142,6 +145,10 @@ libc_bitflags! { /// Region grows down, like a stack. #[cfg(any(linux_android, freebsdlike, target_os = "openbsd"))] MAP_STACK; + /// Do not write through the page caches, write directly to the file. Used for Direct Access (DAX) enabled file systems. + // Available on Linux glibc and musl, MIPS* target excluded. + #[cfg(all(target_os = "linux", not(any(target_arch = "mips", target_arch = "mips64", target_arch = "mips32r6", target_arch = "mips64r6")), not(target_env = "uclibc")))] + MAP_SYNC; /// Pages in this mapping are not retained in the kernel's memory cache. #[cfg(apple_targets)] MAP_NOCACHE;