mirror of https://github.com/vinc/moros.git
20 lines
526 B
Rust
20 lines
526 B
Rust
use crate::api::syscall;
|
|
|
|
use core::alloc::{GlobalAlloc, Layout};
|
|
|
|
pub struct UserspaceAllocator;
|
|
|
|
unsafe impl GlobalAlloc for UserspaceAllocator {
|
|
unsafe fn alloc(&self, layout: Layout) -> *mut u8 {
|
|
syscall::alloc(layout.size(), layout.align())
|
|
}
|
|
|
|
unsafe fn dealloc(&self, ptr: *mut u8, layout: Layout) {
|
|
syscall::free(ptr, layout.size(), layout.align());
|
|
}
|
|
}
|
|
|
|
#[allow(dead_code)]
|
|
#[cfg_attr(feature = "userspace", global_allocator)]
|
|
static ALLOCATOR: UserspaceAllocator = UserspaceAllocator;
|