xv6

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit 052e18485d19f26d4182a662054369926d0c4dd0
parent 1eadf4a8fcc34f79075bb61d3546be303745e461
Author: Austin Clements <amdragon@mit.edu>
Date:   Thu,  1 Sep 2011 21:29:09 -0400

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.

Diffstat:
Mvm.c | 4+++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/vm.c b/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");