Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rust-osdev/linked-list-allocator
https://github.com/rust-osdev/linked-list-allocator
Last synced: 6 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/rust-osdev/linked-list-allocator
- Owner: rust-osdev
- License: apache-2.0
- Created: 2016-01-19T17:46:59.000Z (almost 9 years ago)
- Default Branch: main
- Last Pushed: 2024-05-30T08:20:04.000Z (7 months ago)
- Last Synced: 2024-12-16T00:05:25.818Z (13 days ago)
- Language: Rust
- Size: 208 KB
- Stars: 225
- Watchers: 9
- Forks: 54
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- Changelog: Changelog.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
# linked-list-allocator
[![Crates.io](https://img.shields.io/crates/v/linked-list-allocator)](https://crates.io/crates/linked-list-allocator)
[![Build Status](https://github.com/rust-osdev/linked-list-allocator/workflows/Build/badge.svg)](https://github.com/rust-osdev/linked-list-allocator/actions?query=workflow%3ABuild)
[![docs.rs](https://img.shields.io/badge/docs.rs-documentation-green.svg)](https://docs.rs/linked-list-allocator)## Usage
Create a static allocator in your root module:
```rust
use linked_list_allocator::LockedHeap;#[global_allocator]
static ALLOCATOR: LockedHeap = LockedHeap::empty();
```Before using this allocator, you need to init it:
```rust
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.[`GlobalAlloc`]: https://doc.rust-lang.org/nightly/core/alloc/trait.GlobalAlloc.html
[`AllocRef`]: https://doc.rust-lang.org/nightly/core/alloc/trait.AllocRef.html## License
This crate is dual-licensed under MIT or the Apache License (Version 2.0). See LICENSE-APACHE and LICENSE-MIT for details.