void
kfree(char *v, int len)
{
- struct run **rr;
- struct run *p = (struct run*)v;
- struct run *pend = (struct run*)(v + len);
+ struct run **rr, *p, *pend;
if(len % PAGE)
panic("kfree");
memset(v, 1, len);
acquire(&kalloc_lock);
-
+ p = (struct run*)v;
+ pend = (struct run*)(v + len);
rr = &freelist;
while(*rr){
struct run *rend = (struct run*) ((char*)(*rr) + (*rr)->len);
char*
kalloc(int n)
{
- struct run **rr;
+ char *p;
+ struct run *r, **rr;
if(n % PAGE)
panic("kalloc");
rr = &freelist;
while(*rr){
- struct run *r = *rr;
+ r = *rr;
if(r->len == n){
*rr = r->next;
release(&kalloc_lock);
return (char*) r;
}
if(r->len > n){
- char *p = (char*)r + (r->len - n);
r->len -= n;
+ p = (char*)r + r->len;
release(&kalloc_lock);
return p;
}