arceos_api/imp/
mem.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
use core::alloc::Layout;

cfg_alloc! {
    use core::ptr::NonNull;

    pub fn ax_alloc(layout: Layout) -> Option<NonNull<u8>> {
        axalloc::global_allocator().alloc(layout).ok()
    }

    pub fn ax_dealloc(ptr: NonNull<u8>, layout: Layout) {
        axalloc::global_allocator().dealloc(ptr, layout)
    }
}

cfg_dma! {
    pub use axdma::DMAInfo;

    pub unsafe fn ax_alloc_coherent(layout: Layout) -> Option<DMAInfo> {
        axdma::alloc_coherent(layout).ok()
    }

    pub unsafe fn ax_dealloc_coherent(dma: DMAInfo, layout: Layout) {
        axdma::dealloc_coherent(dma, layout)
    }
}