Crate mmap_rs

Source
Expand description

§mmap-rs

CI Crates.io Docs

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

View 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 and PAGE_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§

MemoryArea
Describes a memory area of a process.
MemoryAreas
The memory areas of the process.
Mmap
Represents an immutable memory mapping.
MmapFlags
The available flags to configure the allocated mapping.
MmapMut
Represents a mutable memory mapping.
MmapNone
Represents an inaccessible memory mapping.
MmapOptions
Represents the options for the memory mapping.
PageSize
The preferred size of the pages uses, where the size is in log2 notation.
PageSizes
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.
ReservedMut
Represents a mutable memory mapping in a reserved state, i.e. a memory mapping that is not backed by any physical pages yet.
ReservedNone
Represents an inaccessible memory mapping in a reserved state, i.e. a memory mapping that is not backed by any physical pages yet.
UnsafeMmapFlags
The available flags to configure the allocated mapping, but that are considered unsafe to use.

Enums§

ShareMode
The share mode of the memory area.