4 个版本
0.1.3 | 2021年11月11日 |
---|---|
0.1.2 | 2021年11月11日 |
0.1.1 | 2021年11月11日 |
0.1.0 | 2021年11月11日 |
#1838 在 嵌入式开发
26KB
480 行
Palloc
嵌入式/裸机系统的可移植链表分配器。
使用此包
在 [dependencies]
部分包含此包
palloc = "0.1.0"
此包使用 Rust 的不稳定功能,因此需要 nightly
更新通道。使用以下命令更新项目文件夹的工具链:
rustup override set nightly
包功能
spin
(默认):提供一个使用 自旋锁 的 GlobalAllocator 实现。allocator_api
(默认):启用 Allocator 特性并在所有全局分配器上实现它。
示例
#![no_std]
use core::ptr::NonNull;
use palloc::{GlobalPalloc, SpinPalloc};
// the allocator is initialized using a const empty function, but it is
// not ready yet, we must initialize it first in main.
#[global_allocator]
static mut ALLOCATOR: SpinPalloc = SpinPalloc::empty();
fn main() {
// First of all we must define the bounds of our heap. Check
// Palloc or GlobalPalloc documentation for informations.
// Heap starting address
let heap_start = 0x8000 as *mut u8;
// Heap size
let heap_size = 0xF000;
// accessing statics is an unsafe operation
// so it must be sorrounded by an unsafe block
unsafe { ALLOCATOR.init(NonNull::new(heap_start).unwrap(), heap_size) };
// we can now use the heap!
// ...
}
文档
所有需要了解的信息都已写在 rustdocs 中。点击 readme 标题下的徽章或 点击这里 读取完整文档。
依赖项
~150KB