kernel: export freepages() function so it can be used in mmurelease()
This commit is contained in:
parent
a6ee23a739
commit
b452f8857f
2 changed files with 11 additions and 5 deletions
|
@ -82,15 +82,14 @@ pagechaindone(void)
|
|||
wakeup(&palloc.pwait[1]);
|
||||
}
|
||||
|
||||
static void
|
||||
void
|
||||
freepages(Page *head, Page *tail, ulong np)
|
||||
{
|
||||
lock(&palloc);
|
||||
assert(palloc.Lock.p == up);
|
||||
tail->next = palloc.head;
|
||||
palloc.head = head;
|
||||
palloc.freecount += np;
|
||||
pagechaindone();
|
||||
unlock(&palloc);
|
||||
}
|
||||
|
||||
ulong
|
||||
|
@ -142,8 +141,11 @@ pagereclaim(Image *i, ulong pages)
|
|||
unlock(i);
|
||||
putimage(i);
|
||||
|
||||
if(np > 0)
|
||||
if(np > 0){
|
||||
lock(&palloc);
|
||||
freepages(fh, ft, np);
|
||||
unlock(&palloc);
|
||||
}
|
||||
|
||||
return np;
|
||||
}
|
||||
|
@ -238,8 +240,11 @@ putpage(Page *p)
|
|||
decref(p);
|
||||
return;
|
||||
}
|
||||
if(decref(p) == 0)
|
||||
if(decref(p) == 0){
|
||||
lock(&palloc);
|
||||
freepages(p, p, 1);
|
||||
unlock(&palloc);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -117,6 +117,7 @@ void free(void*);
|
|||
void freeb(Block*);
|
||||
void freeblist(Block*);
|
||||
int freebroken(void);
|
||||
void freepages(Page*, Page*, ulong);
|
||||
void freepte(Segment*, Pte*);
|
||||
void getcolor(ulong, ulong*, ulong*, ulong*);
|
||||
uintptr getmalloctag(void*);
|
||||
|
|
Loading…
Reference in a new issue