kernel/
lib.rs

1#![no_std]
2#![feature(fn_align)]
3#![feature(naked_functions)]
4#![feature(negative_impls)]
5#![allow(clippy::missing_safety_doc)]
6
7extern crate alloc;
8
9pub mod console;
10pub mod entry;
11pub mod kernelvec;
12pub mod memlayout;
13pub mod param;
14pub mod printf;
15pub mod proc;
16pub mod riscv;
17pub mod spinlock;
18pub mod start;
19pub mod uart;
20
21use buddy_alloc::{BuddyAllocParam, FastAllocParam, NonThreadsafeAlloc};
22
23const FAST_HEAP_SIZE: usize = 32 * 1024; // 32 KB
24const HEAP_SIZE: usize = 1024 * 1024; // 1M
25const LEAF_SIZE: usize = 16;
26
27pub static mut FAST_HEAP: [u8; FAST_HEAP_SIZE] = [0u8; FAST_HEAP_SIZE];
28pub static mut HEAP: [u8; HEAP_SIZE] = [0u8; HEAP_SIZE];
29
30#[global_allocator]
31static ALLOC: NonThreadsafeAlloc = unsafe {
32    let fast_param = FastAllocParam::new(FAST_HEAP.as_ptr(), FAST_HEAP_SIZE);
33    let buddy_param = BuddyAllocParam::new(HEAP.as_ptr(), HEAP_SIZE, LEAF_SIZE);
34    NonThreadsafeAlloc::new(fast_param, buddy_param)
35};