浏览代码

Fix the unsuitable use of pa2page in lab3

main
ArchStacker 9 年前
父节点
当前提交
50905b1ec2
共有 2 个文件被更改,包括 7 次插入7 次删除
  1. +6
    -6
      labcodes/lab3/kern/mm/pmm.c
  2. +1
    -1
      labcodes/lab3/kern/mm/vmm.c

+ 6
- 6
labcodes/lab3/kern/mm/pmm.c 查看文件

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

+ 1
- 1
labcodes/lab3/kern/mm/vmm.c 查看文件

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

正在加载...
取消
保存