Advertisement
Guest User

Untitled

a guest
Sep 30th, 2016
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.45 KB | None | 0 0
  1. pte_t *
  2. pgdir_walk(pde_t *pgdir, const void *va, int create)
  3. {
  4. pde_t page_dir_entry = pgdir[PDX(va)];
  5. if (!page_dir_entry && create) {
  6. struct PageInfo *page = page_alloc(ALLOC_ZERO);
  7. if (page != NULL) {
  8. page->pp_ref += 1;
  9. page_dir_entry = PTE_ADDR(page2pa(page)) | PTE_SYSCALL;
  10. pgdir[PDX(va)] = page_dir_entry;
  11. }
  12. }
  13. if (!page_dir_entry) {
  14. return NULL;
  15. }
  16.  
  17. pte_t *page_table = KADDR(PTE_ADDR(page_dir_entry));
  18. return page_table + PTX(va);
  19. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement