feat: implement capability-based memory management foundation

This commit is contained in:
Faynot
2026-05-05 01:30:16 +03:00
parent a45587042b
commit d542b5586d
8 changed files with 200 additions and 80 deletions

29
kernel/src/cap/object.rs Normal file
View File

@@ -0,0 +1,29 @@
use crate::mem::address::PhysAddr;
use core::sync::atomic::{AtomicUsize, Ordering};
#[derive(Debug)]
pub enum ObjectType {
Untyped,
Frame,
CNode,
ThreadBlock,
PageTable,
}
pub struct KernelObject {
pub phys_addr: PhysAddr,
pub size_bits: u8,
pub obj_type: ObjectType,
pub ref_count: AtomicUsize,
pub owner_id: u64,
}
impl KernelObject {
pub fn add_ref(&self) {
self.ref_count.fetch_add(1, Ordering::Relaxed);
}
pub fn release(&self) -> bool {
self.ref_count.fetch_sub(1, Ordering::Release) == 1
}
}