pub trait PageManager<Meta: VmMeta> {
// Required methods
fn new_root() -> Self;
fn root_ptr(&self) -> NonNull<Pte<Meta>>;
fn p_to_v<T>(&self, ppn: PPN<Meta>) -> NonNull<T>;
fn v_to_p<T>(&self, ptr: NonNull<T>) -> PPN<Meta>;
fn check_owned(&self, pte: Pte<Meta>) -> bool;
fn allocate(&mut self, len: usize, flags: &mut VmFlags<Meta>) -> NonNull<u8>;
fn deallocate(&mut self, pte: Pte<Meta>, len: usize) -> usize;
fn drop_root(&mut self);
// Provided method
fn root_ppn(&self) -> PPN<Meta> { ... }
}Expand description
物理页管理。
Required Methods§
Sourcefn check_owned(&self, pte: Pte<Meta>) -> bool
fn check_owned(&self, pte: Pte<Meta>) -> bool
检查是否拥有一个页的所有权。
Sourcefn allocate(&mut self, len: usize, flags: &mut VmFlags<Meta>) -> NonNull<u8>
fn allocate(&mut self, len: usize, flags: &mut VmFlags<Meta>) -> NonNull<u8>
为地址空间分配 len 个物理页。
flags 允许分配器按策略回填页属性(例如 COW 或自定义位)。
Sourcefn deallocate(&mut self, pte: Pte<Meta>, len: usize) -> usize
fn deallocate(&mut self, pte: Pte<Meta>, len: usize) -> usize
从地址空间释放 pte 指示的 len 个物理页。
Provided Methods§
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.