Skip to content

rust-osdev/linked-list-allocator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

b5caf32 · May 30, 2024
Mar 30, 2024
Nov 6, 2023
Mar 30, 2024
Jan 19, 2016
May 30, 2024
Mar 4, 2023
Feb 16, 2016
Feb 16, 2016
Feb 24, 2023
Jan 14, 2020

Repository files navigation

linked-list-allocator

Crates.io Build Status docs.rs

Usage

Create a static allocator in your root module:

use linked_list_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.lock().init(heap_start, heap_size);
    }
}

Features

  • use_spin (default): Provide a LockedHeap type that implements the GlobalAlloc trait by using a spinlock.
  • alloc_ref: Provide an implementation of the unstable AllocRef trait; requires nightly Rust.
    • Warning: The AllocRef trait is still regularly changed on the Rust side, so expect some regular breakage when using this feature.

License

This crate is dual-licensed under MIT or the Apache License (Version 2.0). See LICENSE-APACHE and LICENSE-MIT for details.