Skip to content

A cross-platform and safe Rust API to create and manage memory mappings in the virtual address space of the calling process.

License

Notifications You must be signed in to change notification settings

manon-traverse/mmap-rs

 
 

Repository files navigation

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.

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).
  • Iterator over the memory areas of the current/a given process.

About

A cross-platform and safe Rust API to create and manage memory mappings in the virtual address space of the calling process.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 100.0%