Add basic allocator

This commit is contained in:
pjht 2024-06-02 11:00:04 -05:00
parent cc227933c5
commit ed6f4e98d3
Signed by: pjht
GPG Key ID: 7B5F6AFBEC7EE78E

View File

@ -1,23 +1,26 @@
use crate::alloc::{GlobalAlloc, Layout, System};
use crate::ptr::null_mut;
use crate::{
alloc::{GlobalAlloc, Layout, System},
ptr::null_mut,
};
static mut HEAP: [u8; 16384] = [0u8; 16384];
static mut HEAP_USED: usize = 0;
#[stable(feature = "alloc_system_type", since = "1.28.0")]
unsafe impl GlobalAlloc for System {
#[inline]
unsafe fn alloc(&self, _layout: Layout) -> *mut u8 {
null_mut()
}
#[inline]
unsafe fn alloc_zeroed(&self, _layout: Layout) -> *mut u8 {
null_mut()
unsafe fn alloc(&self, layout: Layout) -> *mut u8 {
unsafe {
if 16384 - HEAP_USED < layout.size() {
null_mut()
} else {
let ptr = &mut HEAP[HEAP_USED] as *mut u8;
HEAP_USED += layout.size();
ptr
}
}
}
#[inline]
unsafe fn dealloc(&self, _ptr: *mut u8, _layout: Layout) {}
#[inline]
unsafe fn realloc(&self, _ptr: *mut u8, _layout: Layout, _new_size: usize) -> *mut u8 {
null_mut()
}
}