diff options
author | cinap_lenrek <cinap_lenrek@localhost> | 2011-08-26 04:47:34 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@localhost> | 2011-08-26 04:47:34 +0200 |
commit | a6e3c9fd83e72e5c911e83f763e77ab6605a17d2 (patch) | |
tree | 7455ff570c40399e02deeac00525de1cae6cfce2 /sys/src/9/port/segment.c | |
parent | 00161ca7fcd1422bfede7b50776fbf2f871e67c9 (diff) |
calculate the real number of pages used by segments and use it for killbig and proc
Diffstat (limited to 'sys/src/9/port/segment.c')
-rw-r--r-- | sys/src/9/port/segment.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/sys/src/9/port/segment.c b/sys/src/9/port/segment.c index 94267ae85..26a62998e 100644 --- a/sys/src/9/port/segment.c +++ b/sys/src/9/port/segment.c @@ -513,6 +513,27 @@ ibrk(ulong addr, int seg) /* * called with s->lk locked */ +int +mcountseg(Segment *s) +{ + int i, j, pages; + Page **map; + + pages = 0; + for(i = 0; i < s->mapsize; i++){ + if(s->map[i] == 0) + continue; + map = s->map[i]->pages; + for(j = 0; j < PTEPERTAB; j++) + if(map[j]) + pages++; + } + return pages; +} + +/* + * called with s->lk locked + */ void mfreeseg(Segment *s, ulong start, int pages) { |