os/mm/address/
mod.rs

1// HACK: 在一个模块目录/文件的顶层又声明了一个同名子模块,这会造成 “module inception”。
2// 虽然功能上可行,但会引起 API/模块层次混淆,Clippy 建议消除这种重复。
3#![allow(clippy::module_inception)]
4//! 地址模块
5//!
6//! 此模块提供了用于处理物理地址和虚拟地址,
7//! 以及内存管理系统中的页码的抽象。
8//!
9//! # 地址类型
10//!
11//! - Address - 表示内存地址(物理或虚拟)的 Trait
12//! - [`Paddr`] - 物理地址类型
13//! - [`Vaddr`] - 虚拟地址类型
14//! - [`ConvertablePaddr`] - 将物理地址转换为虚拟地址的 Trait
15//! - ConvertableVaddr - 将虚拟地址转换为物理地址的 Trait
16//!
17//! # 地址范围
18//!
19//! - AddressRange - 泛型地址范围
20//! - PaddrRange - 物理地址范围的类型别名
21//! - VaddrRange - 虚拟地址范围的类型别名
22//! - AddressRangeIterator - 地址范围的迭代器
23//!
24//! # 页码
25//!
26//! - [`PageNum`] - 表示页码的 Trait
27//! - [`Ppn`] - 物理页码(Physical Page Number)
28//! - [`Vpn`] - 虚拟页码(Virtual Page Number)
29//!
30//! # 页码范围
31//!
32//! - PageNumRange - 泛型页码范围
33//! - [`PpnRange`] - 物理页码范围的类型别名
34//! - [`VpnRange`] - 虚拟页码范围的类型别名
35//! - PageNumRangeIterator - 页码范围的迭代器
36//!
37//! # 操作
38//!
39//! 此模块提供了三个关键的 Trait 类别:
40//!
41//! - [`UsizeConvert`] - 在类型和 usize 之间进行转换
42//! - CalcOps - 算术和位操作
43//! - AlignOps - 地址对齐操作
44mod address;
45mod operations;
46mod page_num;
47
48pub use address::{ConvertablePaddr, Paddr, Vaddr};
49pub use operations::UsizeConvert;
50pub use page_num::{PageNum, Ppn, PpnRange, Vpn, VpnRange};