Expand description
§mmap-rs
A cross-platform and safe Rust API to create and manage memory mappings in the virtual address space of the calling process. This crate can be used to create both file mappings and anonymous mappings. In addition, this crate supports the use of features such as huge pages, locking physical memory, etc. on platforms where those features are available. Furthermore, this crate allows you to enumerate the memory mappings of a process.
§Changelog
§Rust version requirements (MSRV)
mmap-rs supports rustc version 1.67 or greater since version 0.6.1.
§Supported Platforms
Tier 1 (builds and tests are run in CI):
x86_64-pc-windows-msvc
x86_64-unknown-linux-gnu
i686-unknown-linux-gnu
aarch64-unknown-linux-gnu
armv7a-unknown-linux-gnueabihf
x86_64-apple-darwin
x86_64-unknown-freebsd
Tier 2 (builds are run in CI):
i686-pc-windows-msvc
aarch64-pc-windows-msvc
aarch64-linux-android
armv7-linux-androideabi
x86_64-linux-android
i686-linux-android
aarch64-apple-ios
Tier 3 (no CI, but should work):
aarch64-apple-darwin
x86_64-apple-ios
i686-unknown-freebsd
§Features
- Anonymous memory maps.
-
File-backed memory maps (
unsafe
- see documentation for details). - Copy-on-write vs. shared memory maps.
-
Inaccessible memory maps (using
PROT_NONE
andPAGE_NOACCESS
). - Read-only memory maps.
- Read-write memory maps.
- Executable memory maps.
-
RWX memory maps for JIT purposes (
unsafe
- see documentation for details). - Portable instruction cache flushing.
- Synchronous and asynchronous flushing.
- Support for locking physical memory.
- Huge page support.
-
Stack support (also known as
MAP_STACK
on Unix). - Support to exclude memory maps from core dumps (on Unix only).
- Reserve memory mappings, rather than directly committing them.
- Split and merge memory mappings.
- Query the memory areas of the current/a given process (for a given address or address range).
Re-exports§
pub use error::Error;
Modules§
- error
- This module implements the error type used throughout this crate.
Structs§
- Memory
Area - Describes a memory area of a process.
- Memory
Areas - The memory areas of the process.
- Mmap
- Represents an immutable memory mapping.
- Mmap
Flags - The available flags to configure the allocated mapping.
- MmapMut
- Represents a mutable memory mapping.
- Mmap
None - Represents an inaccessible memory mapping.
- Mmap
Options - Represents the options for the memory mapping.
- Page
Size - The preferred size of the pages uses, where the size is in log2 notation.
- Page
Sizes - A set of (supported) page sizes.
- Protection
- The protection of the memory area.
- Reserved
- Represents an immutable memory mapping in a reserved state, i.e. a memory mapping that is not backed by any physical pages yet.
- Reserved
Mut - Represents a mutable memory mapping in a reserved state, i.e. a memory mapping that is not backed by any physical pages yet.
- Reserved
None - Represents an inaccessible memory mapping in a reserved state, i.e. a memory mapping that is not backed by any physical pages yet.
- Unsafe
Mmap Flags - The available flags to configure the allocated mapping, but that are considered unsafe to use.
Enums§
- Share
Mode - The share mode of the memory area.