xv6

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

commit d3ecf3eb44379f12b47da9d08e4d1b52cf7c2601
parent b1d41d678888fd1a51e4844ab583f7c47f9fb218
Author: Austin Clements <amdragon@mit.edu>
Date:   Wed,  1 Sep 2010 17:14:58 -0400

Slight simplification of copyuvm.  We could simplify other things now that processes are contiguous, but we'd have to think harder about the error paths.

Diffstat:
Mvm.c | 16++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/vm.c b/vm.c @@ -310,14 +310,14 @@ copyuvm(pde_t *pgdir, uint sz) for(i = 0; i < sz; i += PGSIZE){ if(!(pte = walkpgdir(pgdir, (void *)i, 0))) panic("copyuvm: pte should exist\n"); - if(*pte & PTE_P){ - pa = PTE_ADDR(*pte); - if(!(mem = kalloc())) - goto bad; - memmove(mem, (char *)pa, PGSIZE); - if(!mappages(d, (void *)i, PGSIZE, PADDR(mem), PTE_W|PTE_U)) - goto bad; - } + if(!(*pte & PTE_P)) + panic("copyuvm: page not present\n"); + pa = PTE_ADDR(*pte); + if(!(mem = kalloc())) + goto bad; + memmove(mem, (char *)pa, PGSIZE); + if(!mappages(d, (void *)i, PGSIZE, PADDR(mem), PTE_W|PTE_U)) + goto bad; } return d;