xv6

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

commit e0240674f5b30adf92714162cf51dabc43b17aa7
parent 7bb73cdbc78a1f0df07539125e681c084b66d876
Author: rsc <rsc>
Date:   Mon, 27 Aug 2007 12:50:36 +0000

make kfree loop same as kalloc

Diffstat:
Mkalloc.c | 13+++++--------
1 file changed, 5 insertions(+), 8 deletions(-)

diff --git 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; }