kernel_api/allocator/
mod.rs1mod pmm;
4pub use pmm::*;
5
6mod vmm;
7pub use vmm::*;
8
9#[derive(Debug, Copy, Clone, Eq, PartialEq, Default)]
11#[non_exhaustive]
12pub struct AllocError {
13 provider: AllocProvider,
14}
15
16impl AllocError {
17 pub fn pmm() -> Self { Self { provider: AllocProvider::Pmm } }
18 pub fn vmm() -> Self { Self { provider: AllocProvider::Vmm } }
19 pub fn heap() -> Self { Self { provider: AllocProvider::Heap } }
20}
21
22#[derive(Debug, Copy, Clone, Eq, PartialEq, Default)]
23enum AllocProvider {
24 #[default]
25 None,
26 Pmm,
27 Vmm,
28 Heap,
29 Syscall(crate::syscall::Error),
30}
31
32impl From<crate::syscall::Error> for AllocError {
33 fn from(value: crate::syscall::Error) -> Self {
34 AllocError { provider: AllocProvider::Syscall(value) }
35 }
36}