Skip to main content

PageManager

Trait PageManager 

Source
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§

Source

fn new_root() -> Self

新建根页表页。

Source

fn root_ptr(&self) -> NonNull<Pte<Meta>>

获取根页表。

Source

fn p_to_v<T>(&self, ppn: PPN<Meta>) -> NonNull<T>

计算当前地址空间上指向物理页的指针。

Source

fn v_to_p<T>(&self, ptr: NonNull<T>) -> PPN<Meta>

计算当前地址空间上的指针指向的物理页。

Source

fn check_owned(&self, pte: Pte<Meta>) -> bool

检查是否拥有一个页的所有权。

Source

fn allocate(&mut self, len: usize, flags: &mut VmFlags<Meta>) -> NonNull<u8>

为地址空间分配 len 个物理页。

Source

fn deallocate(&mut self, pte: Pte<Meta>, len: usize) -> usize

从地址空间释放 pte 指示的 len 个物理页。

Source

fn drop_root(&mut self)

释放根页表。

Provided Methods§

Source

fn root_ppn(&self) -> PPN<Meta>

获取根页表的物理页号。

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.

Implementors§