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.
This commit is contained in:
parent
b1d41d6788
commit
d3ecf3eb44
1 changed files with 8 additions and 8 deletions
16
vm.c
16
vm.c
|
@ -310,14 +310,14 @@ copyuvm(pde_t *pgdir, uint sz)
|
||||||
for(i = 0; i < sz; i += PGSIZE){
|
for(i = 0; i < sz; i += PGSIZE){
|
||||||
if(!(pte = walkpgdir(pgdir, (void *)i, 0)))
|
if(!(pte = walkpgdir(pgdir, (void *)i, 0)))
|
||||||
panic("copyuvm: pte should exist\n");
|
panic("copyuvm: pte should exist\n");
|
||||||
if(*pte & PTE_P){
|
if(!(*pte & PTE_P))
|
||||||
pa = PTE_ADDR(*pte);
|
panic("copyuvm: page not present\n");
|
||||||
if(!(mem = kalloc()))
|
pa = PTE_ADDR(*pte);
|
||||||
goto bad;
|
if(!(mem = kalloc()))
|
||||||
memmove(mem, (char *)pa, PGSIZE);
|
goto bad;
|
||||||
if(!mappages(d, (void *)i, PGSIZE, PADDR(mem), PTE_W|PTE_U))
|
memmove(mem, (char *)pa, PGSIZE);
|
||||||
goto bad;
|
if(!mappages(d, (void *)i, PGSIZE, PADDR(mem), PTE_W|PTE_U))
|
||||||
}
|
goto bad;
|
||||||
}
|
}
|
||||||
return d;
|
return d;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue