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…
	
	Add table
		
		Reference in a new issue