Fix the unsuitable use of pa2page in lab4

This commit is contained in:
ArchStacker 2015-05-04 19:44:13 +08:00
parent 17057e1f1f
commit bca0ff491c
2 changed files with 7 additions and 7 deletions

View File

@ -406,7 +406,7 @@ get_page(pde_t *pgdir, uintptr_t la, pte_t **ptep_store) {
*ptep_store = ptep; *ptep_store = ptep;
} }
if (ptep != NULL && *ptep & PTE_P) { if (ptep != NULL && *ptep & PTE_P) {
return pa2page(*ptep); return pte2page(*ptep);
} }
return NULL; return NULL;
} }
@ -531,7 +531,7 @@ check_pgdir(void) {
pte_t *ptep; pte_t *ptep;
assert((ptep = get_pte(boot_pgdir, 0x0, 0)) != NULL); assert((ptep = get_pte(boot_pgdir, 0x0, 0)) != NULL);
assert(pa2page(*ptep) == p1); assert(pte2page(*ptep) == p1);
assert(page_ref(p1) == 1); assert(page_ref(p1) == 1);
ptep = &((pte_t *)KADDR(PDE_ADDR(boot_pgdir[0])))[1]; ptep = &((pte_t *)KADDR(PDE_ADDR(boot_pgdir[0])))[1];
@ -549,7 +549,7 @@ check_pgdir(void) {
assert(page_ref(p1) == 2); assert(page_ref(p1) == 2);
assert(page_ref(p2) == 0); assert(page_ref(p2) == 0);
assert((ptep = get_pte(boot_pgdir, PGSIZE, 0)) != NULL); assert((ptep = get_pte(boot_pgdir, PGSIZE, 0)) != NULL);
assert(pa2page(*ptep) == p1); assert(pte2page(*ptep) == p1);
assert((*ptep & PTE_U) == 0); assert((*ptep & PTE_U) == 0);
page_remove(boot_pgdir, 0x0); page_remove(boot_pgdir, 0x0);
@ -560,8 +560,8 @@ check_pgdir(void) {
assert(page_ref(p1) == 0); assert(page_ref(p1) == 0);
assert(page_ref(p2) == 0); assert(page_ref(p2) == 0);
assert(page_ref(pa2page(boot_pgdir[0])) == 1); assert(page_ref(pde2page(boot_pgdir[0])) == 1);
free_page(pa2page(boot_pgdir[0])); free_page(pde2page(boot_pgdir[0]));
boot_pgdir[0] = 0; boot_pgdir[0] = 0;
cprintf("check_pgdir() succeeded!\n"); cprintf("check_pgdir() succeeded!\n");
@ -595,7 +595,7 @@ check_boot_pgdir(void) {
assert(strlen((const char *)0x100) == 0); assert(strlen((const char *)0x100) == 0);
free_page(p); free_page(p);
free_page(pa2page(PDE_ADDR(boot_pgdir[0]))); free_page(pde2page(boot_pgdir[0]));
boot_pgdir[0] = 0; boot_pgdir[0] = 0;
cprintf("check_boot_pgdir() succeeded!\n"); cprintf("check_boot_pgdir() succeeded!\n");

View File

@ -263,7 +263,7 @@ check_pgfault(void) {
assert(sum == 0); assert(sum == 0);
page_remove(pgdir, ROUNDDOWN(addr, PGSIZE)); page_remove(pgdir, ROUNDDOWN(addr, PGSIZE));
free_page(pa2page(pgdir[0])); free_page(pde2page(pgdir[0]));
pgdir[0] = 0; pgdir[0] = 0;
mm->pgdir = NULL; mm->pgdir = NULL;