From e0240674f5b30adf92714162cf51dabc43b17aa7 Mon Sep 17 00:00:00 2001 From: rsc Date: Mon, 27 Aug 2007 12:50:36 +0000 Subject: make kfree loop same as kalloc --- kalloc.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) (limited to 'kalloc.c') diff --git a/kalloc.c b/kalloc.c index 4125527..eb78212 100644 --- 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; } -- cgit v1.2.3