From b452f8857f22089adca137f32b9456a208554800 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Wed, 1 May 2019 10:07:39 +0200 Subject: kernel: export freepages() function so it can be used in mmurelease() --- sys/src/9/port/page.c | 15 ++++++++++----- sys/src/9/port/portfns.h | 1 + 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/sys/src/9/port/page.c b/sys/src/9/port/page.c index 987f4c312..6e74cbe4e 100644 --- a/sys/src/9/port/page.c +++ b/sys/src/9/port/page.c @@ -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 diff --git a/sys/src/9/port/portfns.h b/sys/src/9/port/portfns.h index 7360e93e9..6d41cd03a 100644 --- a/sys/src/9/port/portfns.h +++ b/sys/src/9/port/portfns.h @@ -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*); -- cgit v1.2.3