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