Add basic allocator
This commit is contained in:
parent
128078e9f9
commit
0896806123
@ -1,23 +1,26 @@
|
|||||||
use crate::alloc::{GlobalAlloc, Layout, System};
|
use crate::{
|
||||||
use crate::ptr::null_mut;
|
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")]
|
#[stable(feature = "alloc_system_type", since = "1.28.0")]
|
||||||
unsafe impl GlobalAlloc for System {
|
unsafe impl GlobalAlloc for System {
|
||||||
#[inline]
|
#[inline]
|
||||||
unsafe fn alloc(&self, _layout: Layout) -> *mut u8 {
|
unsafe fn alloc(&self, layout: Layout) -> *mut u8 {
|
||||||
|
unsafe {
|
||||||
|
if 16384 - HEAP_USED < layout.size() {
|
||||||
null_mut()
|
null_mut()
|
||||||
|
} else {
|
||||||
|
let ptr = &mut HEAP[HEAP_USED] as *mut u8;
|
||||||
|
HEAP_USED += layout.size();
|
||||||
|
ptr
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[inline]
|
|
||||||
unsafe fn alloc_zeroed(&self, _layout: Layout) -> *mut u8 {
|
|
||||||
null_mut()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
unsafe fn dealloc(&self, _ptr: *mut u8, _layout: Layout) {}
|
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()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user