Skip to main content

VmMeta

Trait VmMeta 

Source
pub trait VmMeta:
    'static
    + MmuMeta
    + Copy
    + Ord
    + Hash
    + Debug {
    const V_ADDR_BITS: usize = _;
    const MAX_LEVEL: usize = _;
    const PPN_MASK: usize = _;

    // Provided methods
    fn pages_in_table(level: usize) -> usize { ... }
    fn bytes_in_table(level: usize) -> usize { ... }
    fn bytes_in_page(level: usize) -> usize { ... }
    fn is_huge(value: usize, level: usize) -> bool { ... }
    fn ppn(value: usize) -> PPN<Self> { ... }
    fn set_ppn(value: &mut usize, ppn: PPN<Self>) { ... }
    fn clear_ppn(value: &mut usize) { ... }
}
Expand description

页式虚存元数据。

Provided Associated Constants§

Source

const V_ADDR_BITS: usize = _

虚拟页号位数,用于裁剪或扩展正确的虚址。

Source

const MAX_LEVEL: usize = _

页表最大级别。

Source

const PPN_MASK: usize = _

页表项中的物理页号掩码。

Provided Methods§

Source

fn pages_in_table(level: usize) -> usize

level 级页表容纳的总页数。

Source

fn bytes_in_table(level: usize) -> usize

level 级页表容纳的总字节数。

Source

fn bytes_in_page(level: usize) -> usize

level 级页容纳的总字节数。

Source

fn is_huge(value: usize, level: usize) -> bool

判断页表项指向的是一个大于 0 级(4 kiB)的物理页。

§NOTE

为了零开销抽象,这个方法的实现可能不会判断 PTE 是否 valid。

Source

fn ppn(value: usize) -> PPN<Self>

从 PTE 中获得 PPN。

Source

fn set_ppn(value: &mut usize, ppn: PPN<Self>)

设置页表项的 ppn。

Source

fn clear_ppn(value: &mut usize)

清除页表项中的 ppn。

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl<T: 'static + MmuMeta + Copy + Ord + Hash + Debug> VmMeta for T

自动实现。