Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- pte_t *
- pgdir_walk(pde_t *pgdir, const void *va, int create)
- {
- pde_t page_dir_entry = pgdir[PDX(va)];
- if (!page_dir_entry && create) {
- struct PageInfo *page = page_alloc(ALLOC_ZERO);
- if (page != NULL) {
- page->pp_ref += 1;
- page_dir_entry = PTE_ADDR(page2pa(page)) | PTE_SYSCALL;
- pgdir[PDX(va)] = page_dir_entry;
- }
- }
- if (!page_dir_entry) {
- return NULL;
- }
- pte_t *page_table = KADDR(PTE_ADDR(page_dir_entry));
- return page_table + PTX(va);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement