freertos_rust/allocator.rs
1use core::alloc::{Layout, GlobalAlloc};
2use crate::shim::*;
3use crate::base::*;
4
5/**
6Use with:
7
8 #[global_allocator]
9 static GLOBAL: FreeRtosAllocator = FreeRtosAllocator;
10*/
11
12pub struct FreeRtosAllocator;
13
14unsafe impl GlobalAlloc for FreeRtosAllocator {
15 unsafe fn alloc(&self, layout: Layout) -> *mut u8 {
16 let res = freertos_rs_pvPortMalloc(layout.size() as u32);
17 return res as *mut u8;
18 }
19
20 unsafe fn dealloc(&self, ptr: *mut u8, _layout: Layout) {
21 freertos_rs_vPortFree(ptr as FreeRtosVoidPtr)
22 }
23}
24