slabmalloc 0.1.1

Simple slab based malloc implementation in rust. Can be used stand-alone or in order to provide the necessary interface to rusts liballoc library. slabmalloc only relies on libcore.
docs.rs failed to build slabmalloc-0.1.1
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build: slabmalloc-0.11.0

slabmalloc Build Status Crates.io

Simple slab based malloc implementation in rust, in order to provide the necessary interface to rusts liballoc library. slabmalloc only relies on libcore and is designed to be used in kernel level code as the only interface a client needs to provide is the necessary mechanism to allocate and free 4KiB frames (or any other default page-size on non-x86 hardware).

Usage

  • Use the ZoneAllocator to allocate arbitrary sized objects:
let mut mmap = MmapSlabAllocator::new();
let mut zone: ZoneAllocator = ZoneAllocator::new(&mmap);
let object_size = 12;
let alignment = 4;

match zone.allocate(object_size, alignment) {
    None => println!("Out of memory..."),
    Some(ptr) => zone.deallocate(ptr, object_size, alignment),
}
  • Use the SlabAllocator to allocate fixed sized objects:
let object_size = 10;
let alignment = 8;
let mmap = MmapSlabAllocator::new();
let mut sa: SlabAllocator = SlabAllocator::new(object_size, &mmap);
sa.allocate(alignment);

The slabmalloc API is designed satisfy the rust liballoc low-level memory allocation interface.

Documentation