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 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.