- uintptr_t pd_offset = PD_INDEX(va);
- uintptr_t pt_offset = PT_INDEX(va);
- ptd_t* ptd = (ptd_t*)PTD_BASE_VADDR;
-
- // 在页表与页目录中找到一个可用的空位进行映射(位于va或其附近)
- ptd_t pde = ptd[pd_offset];
- pt_t* pt = (pt_t*)PT_VADDR(pd_offset);
- while (pde && pd_offset < 1024) {
- if (pt_offset == 1024) {
- pd_offset++;
- pt_offset = 0;
- pde = ptd[pd_offset];
- pt = (pt_t*)PT_VADDR(pd_offset);