implement heap allocator tests

This commit is contained in:
Alexander Neuhäuser
2025-12-20 17:40:45 +01:00
committed by GitHub
parent 82fa03d48e
commit 36bc1f3315
20 changed files with 730 additions and 347 deletions

View File

@@ -1,6 +1,34 @@
#![no_std]
#![allow(clippy::missing_safety_doc)]
use core::{
panic::PanicInfo,
ptr::{read_volatile, write_volatile},
};
use core::ptr::{read_volatile, write_volatile};
use heap::Heap;
unsafe extern "C" {
unsafe static mut __heap_start: u8;
unsafe static mut __heap_end: u8;
}
#[global_allocator]
pub static mut GLOBAL_ALLOCATOR: Heap = Heap::empty();
pub unsafe fn init_heap() {
let start = core::ptr::addr_of_mut!(__heap_start) as usize;
let end = core::ptr::addr_of_mut!(__heap_end) as usize;
let heap = core::ptr::addr_of_mut!(GLOBAL_ALLOCATOR);
(*heap).init(start, end);
}
#[panic_handler]
fn panic(_panic: &PanicInfo) -> ! {
loop {
println!("Panic");
}
}
#[macro_export]
macro_rules! print {
@@ -23,7 +51,6 @@ pub mod peripherals;
pub mod configuration;
pub mod framebuffer;
pub mod heap;
pub mod irq_interrupt;
pub mod mailbox;
pub mod timer;
@@ -35,10 +62,3 @@ pub fn mmio_read(address: u32) -> u32 {
pub fn mmio_write(address: u32, data: u32) {
unsafe { write_volatile(address as *mut u32, data) }
}
#[derive(Debug)]
pub enum NovaError {
Mailbox,
HeapFull,
EmptyHeapSegmentNotAllowed,
}