Expand description
页表定义
三级页表:PGD(1GB) → PMD(2MB) → PTE(4KB) 叶子可出现在任意级别,支持 4KB / 2MB / 1GB 页。
Structs§
- Page
Prot - 架构无关的页保护属性
Enums§
- Page
Level - 页大小级别
Constants§
- BOOT_
STACK_ SIZE - Boot 阶段 per-CPU 栈大小(8KB)
- KERNEL_
ADDR_ END - 内核地址空间结束
- KERNEL_
ADDR_ START - 内核地址空间起始
- KERNEL_
STACK_ SIZE - 内核线程栈大小(16KB)
- KFDT_
ADDR_ SIZE - 内核 FDT 区域大小
- KFDT_
ADDR_ START - 内核 FDT 区域起始
- KFIXMAP_
ADDR_ START - Fixmap 区域起始(KIMAGE 末尾 2MB)
- KFIXMAP_
NR_ PAGES - Fixmap 页数
- KIMAGE_
ADDR_ SIZE - 内核镜像区域大小
- KIMAGE_
ADDR_ START - 内核镜像区域起始
- KIO_
ADDR_ SIZE - 内核 IO 映射区域大小
- KIO_
ADDR_ START - 内核 IO 映射区域起始
- KMEM_
ADDR_ END - 内核线性映射区域结束
- KMEM_
ADDR_ START - 内核线性映射区域起始
- KPAGE_
ADDR_ SIZE - 内核页元数据区域大小
- KPAGE_
ADDR_ START - 内核页元数据区域起始
- PAGE_
MASK - 页掩码
- PAGE_
SHIFT - 页偏移位数
- PAGE_
SIZE - 页大小(4KB)
- PGD_
MASK - PGD 级掩码
- PGD_
SHIFT - PGD 级偏移位数
- PGD_
SIZE - PGD 级大小(1GB)
- PMD_
MASK - PMD 级掩码
- PMD_
SHIFT - PMD 级偏移位数
- PMD_
SIZE - PMD 级大小(2MB)
- PTRS_
PER_ TABLE - 每级页表条目数
- USER_
ADDR_ END - 用户态地址空间结束
- USER_
ADDR_ START - 用户态地址空间起始
- VA_BITS
- 虚拟地址有效位宽
Functions§
- entry_
is_ leaf - 条目是否为叶子(非 table pointer)
- entry_
is_ valid - 条目是否有效
- leaf_
to_ paddr - 叶子条目 → 物理地址
- paddr_
to_ leaf - 物理地址 + 保护属性 → 叶子条目
- paddr_
to_ table - 物理地址 → 非叶子条目(table pointer)
- table_
to_ paddr - 非叶子条目 → 物理地址