diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2015-07-09 00:01:50 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2015-07-09 00:01:50 +0200 |
commit | 8ed25f24b7831eab394f14697766d55065b18822 (patch) | |
tree | 58fade4cfccb0e0e081e7687a3860406c80d54e1 /sys/src/9/port/swap.c | |
parent | fcb9abccbbc73a4f449d55c2c7fb369db2ad139d (diff) |
kernel: various cleanups of imagereclaim(), pagereclaim(), freepages(), putimage()
imagereclaim(), pagereclaim():
- move imagereclaim() and pagereclaim() declarations to portfns.h
- consistently use ulong type for page counts
- name number of pages to free "pages" instead of "min"
- check for pages == 0 on entry
freepages():
- move pagechaindone() call to wakeup newpage() consumers inside
palloc critical section.
putimage():
- use long type for refcount
Diffstat (limited to 'sys/src/9/port/swap.c')
-rw-r--r-- | sys/src/9/port/swap.c | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/sys/src/9/port/swap.c b/sys/src/9/port/swap.c index 73d12345a..f2966449b 100644 --- a/sys/src/9/port/swap.c +++ b/sys/src/9/port/swap.c @@ -118,25 +118,22 @@ kickpager(void) kproc("pager", pager, 0); } -extern int pagereclaim(Image*,int); /* page.c */ -extern int imagereclaim(int); /* segment.c */ - static int reclaim(void) { - int n; + ulong np; for(;;){ - if((n = pagereclaim(&fscache, 1000)) > 0) { - if(0) print("reclaim: %d fscache\n", n); - } else if((n = pagereclaim(&swapimage, 1000)) > 0) { - if(0) print("reclaim: %d swap\n", n); - } else if((n = imagereclaim(1000)) > 0) { - if(0) print("reclaim: %d image\n", n); + if((np = pagereclaim(&fscache, 1000)) > 0) { + if(0) print("reclaim: %lud fscache\n", np); + } else if((np = pagereclaim(&swapimage, 1000)) > 0) { + if(0) print("reclaim: %lud swap\n", np); + } else if((np = imagereclaim(1000)) > 0) { + if(0) print("reclaim: %lud image\n", np); } if(!needpages(nil)) return 1; /* have pages, done */ - if(n == 0) + if(np == 0) return 0; /* didnt reclaim, need to swap */ sched(); } |