Documentation

Linux Status Build status

Introduction

memadvise is a Rust crate that can provide the operating system with hints about memory access patterns. For example, if the user calls memadvise::advise() with Advice::Sequential, the kernel may start bringing memory pages into RAM (if they were on disk) starting at the beginning of the block of memory passed.

Example

```rust extern crate memadvise; extern crate page_size;

fn main() { // Allocate block of memory in a system specific manner.

// Get portion of memory block (must be aligned to system page size).
let address: *mut () = ...
let length = 320000;

// Tell the OS to start loading this portion into RAM starting at the beginning.
memadvise::advise(address, length, Advice::Sequential).unwrap();

// Do something with this portion of memory

// Tell the OS we do not need this portion right now.
// That way, the OS can safely swap it out to disk.
memadvise::advise(address, length, Advice::DontNeed).unwrap();

// Do some other stuff.

// Be sure to free block of memory (system specific) at the end.

}

```

Advice

memadvise features five different 'hints' used to tell the system how a program will use a certain range of memory.

Platforms

memadvise should Work on Windows and any POSIX compatible system (Linux, Mac OSX, etc.).

memadvise is continuously tested on: * x86_64-unknown-linux-gnu (Linux) * i686-unknown-linux-gnu * x86_64-unknown-linux-musl (Linux w/ MUSL) * i686-unknown-linux-musl * x86_64-apple-darwin (Mac OSX) * i686-apple-darwin * x86_64-pc-windows-msvc (Windows) * i686-pc-windows-msvc * x86_64-pc-windows-gnu * i686-pc-windows-gnu

memadvise is continuously cross-compiled for: * arm-unknown-linux-gnueabihf * aarch64-unknown-linux-gnu * mips-unknown-linux-gnu * aarch64-unknown-linux-musl * i686-linux-android * x86_64-linux-android * arm-linux-androideabi * aarch64-linux-android * i386-apple-ios * x86_64-apple-ios * i686-unknown-freebsd * x86_64-unknown-freebsd * x86_64-unknown-netbsd * asmjs-unknown-emscripten