]> Devi Nivas Git - cs3210-lab1.git/commitdiff
make kfree loop same as kalloc
authorrsc <rsc>
Mon, 27 Aug 2007 12:50:36 +0000 (12:50 +0000)
committerrsc <rsc>
Mon, 27 Aug 2007 12:50:36 +0000 (12:50 +0000)
kalloc.c

index 4125527647b8fac6b8b79d3ce875dbb2cca3c48b..eb782129d1e372c91212e0ff163e3ba9954535e2 100644 (file)
--- a/kalloc.c
+++ b/kalloc.c
@@ -93,20 +93,17 @@ char*
 kalloc(int n)
 {
   char *p;
-  struct run *r, **rr;
+  struct run *r, **rp;
 
   if(n % PAGE || n <= 0)
     panic("kalloc");
 
   acquire(&kalloc_lock);
-
-  rr = &freelist;
-  while(*rr){
-    r = *rr;
+  for(rp=&freelist; (r=*rp) != 0; rp=&r->next){
     if(r->len == n){
-      *rr = r->next;
+      *rp = r->next;
       release(&kalloc_lock);
-      return (char*) r;
+      return (char*)r;
     }
     if(r->len > n){
       r->len -= n;
@@ -114,9 +111,9 @@ kalloc(int n)
       release(&kalloc_lock);
       return p;
     }
-    rr = &(*rr)->next;
   }
   release(&kalloc_lock);
+
   cprintf("kalloc: out of memory\n");
   return 0;
 }