pub trait MmuMeta: Copy {
Show 13 associated constants and 13 methods const P_ADDR_BITS: usize; const V_ADDR_BITS: usize; const PPN_BASE: usize; const FLAG_POS_V: usize; const FLAG_POS_R: usize; const FLAG_POS_W: usize; const FLAG_POS_X: usize; const FLAG_POS_U: usize; const FLAG_POS_G: usize; const FLAG_POS_A: usize; const FLAG_POS_D: usize; const PPN_MASK: usize = _; const MAX_LEVEL: usize = _; fn is_leaf(value: usize) -> bool; fn is_huge(value: usize, level: usize) -> bool { ... } fn is_valid(value: usize) -> bool { ... } fn is_readable(value: usize) -> bool { ... } fn is_writable(value: usize) -> bool { ... } fn is_executable(value: usize) -> bool { ... } fn is_user(value: usize) -> bool { ... } fn is_global(value: usize) -> bool { ... } fn is_accessed(value: usize) -> bool { ... } fn is_dirty(value: usize) -> bool { ... } fn ppn(value: usize) -> PPN { ... } fn set_ppn(value: &mut usize, ppn: PPN) { ... } fn clear_ppn(value: &mut usize) { ... }
}
Expand description

分页元数据。

Required Associated Constants

物理地址位数,用于计算物理页号形式。

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

物理地址在 PTE 中的位置。

Provided Associated Constants

从 PTE 中遮罩出 PPN,用于修改 PPN。

NOTE

永远不必设置这个常量,因为它是自动计算的。

通过虚址位数计算页表最大级别。

Required Methods

如果页表项指向物理页,则返回 true

NOTE

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

Provided Methods

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

NOTE

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

判断页表项是否 valid。

判断页表项是否可读。

判断页表项是否可写。

判断页表项是否可执行。

判断页表项是否用于用户态。

判断页表项是否全局的。

判断页表项是否访问过。

判断页表项是否被修改过。

从 PTE 中获得 PPN。

设置页表项的 ppn。

清除页表项中的 ppn。

Implementors