]> Devi Nivas Git - cs3210-lab0.git/commitdiff
Slight simplification of copyuvm. We could simplify other things now that processes...
authorAustin Clements <amdragon@mit.edu>
Wed, 1 Sep 2010 21:14:58 +0000 (17:14 -0400)
committerAustin Clements <amdragon@mit.edu>
Wed, 1 Sep 2010 21:14:58 +0000 (17:14 -0400)
vm.c

diff --git a/vm.c b/vm.c
index 2f2b238da37b0b1623389564c51ea63a1d494d99..8cfac14a87e283216502767fa5ed4eb3a1c55802 100644 (file)
--- 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;