linked_list_allocator

Crates.iolinked_list_allocator
lib.rslinked_list_allocator
version0.10.5
sourcesrc
created_at2016-02-16 12:08:27.784911
updated_at2023-03-04 10:09:25.658469
descriptionSimple allocator usable for no_std systems. It builds a linked list from the freed blocks and thus needs no additional data structures.
homepagehttp://os.phil-opp.com/kernel-heap.html#a-better-allocator
repositoryhttps://github.com/phil-opp/linked-list-allocator
max_upload_size
id4191
size90,856
linked_list_allocator (github:rust-osdev:linked_list_allocator)

documentation

https://docs.rs/crate/linked_list_allocator

README

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.

Commit count: 240

cargo fmt