Crates.io | linked_list_allocator |
lib.rs | linked_list_allocator |
version | 0.10.5 |
source | src |
created_at | 2016-02-16 12:08:27.784911 |
updated_at | 2023-03-04 10:09:25.658469 |
description | Simple allocator usable for no_std systems. It builds a linked list from the freed blocks and thus needs no additional data structures. |
homepage | http://os.phil-opp.com/kernel-heap.html#a-better-allocator |
repository | https://github.com/phil-opp/linked-list-allocator |
max_upload_size | |
id | 4191 |
size | 90,856 |
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);
}
}
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.
AllocRef
trait is still regularly changed on the Rust side, so expect some regular breakage when using this feature.This crate is dual-licensed under MIT or the Apache License (Version 2.0). See LICENSE-APACHE and LICENSE-MIT for details.