#slab #allocator #no_std #heap #kernel

nightly no-std slab_allocator

Slab allocator for no_std systems. Uses multiple slabs with blocks of different sizes and a linked list for blocks larger than 4096 bytes

8 releases

0.3.5 Sep 6, 2018
0.3.4 Sep 6, 2018
0.3.3 Jul 15, 2018
0.3.2 Jun 24, 2018
0.1.0 Jan 8, 2018

#59 in Memory management

Download history 12/week @ 2018-12-12 76/week @ 2018-12-19 3/week @ 2018-12-26 8/week @ 2019-01-02 12/week @ 2019-01-09 1/week @ 2019-01-16 3/week @ 2019-01-23 3/week @ 2019-01-30 9/week @ 2019-02-06 1/week @ 2019-02-13 2/week @ 2019-02-20 22/week @ 2019-02-27 6/week @ 2019-03-06 32/week @ 2019-03-20

135 downloads per month

MIT license

23KB
476 lines

slab_allocator

Build Status

Documentation

Usage

Create a static allocator in your root module:

use slab_allocator::LockedHeap;

#[global_allocator]
static ALLOCATOR: LockedHeap = LockedHeap::empty();

Before using this allocator, you need to init it:

pub fn init_heap() {
    let heap_start =;
    let heap_end =;
    let heap_size = heap_end - heap_start;
    unsafe {
        ALLOCATOR.init(heap_start, heap_size);
    }
}

License

This crate is licensed under MIT. See LICENSE for details.

Dependencies

~67KB