Skip missing page directories in deallocuvm
Previously, deallocuvm scanned from 0 to KERNBASE in one page increments, which had a noticable effect on boot time. Now it skips over missing page directories.
This commit is contained in:
parent
1eadf4a8fc
commit
052e18485d
1 changed files with 3 additions and 1 deletions
4
vm.c
4
vm.c
|
@ -261,7 +261,9 @@ deallocuvm(pde_t *pgdir, uint oldsz, uint newsz)
|
|||
a = PGROUNDUP(newsz);
|
||||
for(; a < oldsz; a += PGSIZE){
|
||||
pte = walkpgdir(pgdir, (char*)a, 0);
|
||||
if(pte && (*pte & PTE_P) != 0){
|
||||
if(!pte)
|
||||
a += (NPTENTRIES - 1) * PGSIZE;
|
||||
else if((*pte & PTE_P) != 0){
|
||||
pa = PTE_ADDR(*pte);
|
||||
if(pa == 0)
|
||||
panic("kfree");
|
||||
|
|
Loading…
Reference in a new issue