summaryrefslogtreecommitdiff
path: root/sys/src/9/port/page.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2014-04-15 21:34:41 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2014-04-15 21:34:41 +0200
commit66aa9490398fa43d1bbec73f0e12899582a73fe7 (patch)
tree17f87e6d0e7c9aa1ba9781379dd6f0d8583d0ede /sys/src/9/port/page.c
parent712ce5d9fff96a46f51b37a65532022b1a9b833c (diff)
kernel: fix printing wrong memory sizes in pageinit(), overflowed on amd64 (thanks aram)
Diffstat (limited to 'sys/src/9/port/page.c')
-rw-r--r--sys/src/9/port/page.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/sys/src/9/port/page.c b/sys/src/9/port/page.c
index c1efb906a..96b7b9ab7 100644
--- a/sys/src/9/port/page.c
+++ b/sys/src/9/port/page.c
@@ -15,7 +15,8 @@ pageinit(void)
int color, i, j;
Page *p;
Pallocmem *pm;
- ulong m, np, k, vkb, pkb;
+ vlong m, v, u;
+ ulong np;
np = 0;
for(i=0; i<nelem(palloc.mem); i++){
@@ -46,8 +47,8 @@ pageinit(void)
palloc.tail->next = 0;
palloc.user = p - palloc.pages;
- pkb = palloc.user*BY2PG/1024;
- vkb = pkb + (conf.nswap*BY2PG)/1024;
+ u = palloc.user*BY2PG;
+ v = u + conf.nswap*BY2PG;
/* Paging numbers */
swapalloc.highwater = (palloc.user*5)/100;
@@ -57,11 +58,12 @@ pageinit(void)
for(i=0; i<nelem(conf.mem); i++)
if(conf.mem[i].npage)
m += conf.mem[i].npage*BY2PG;
- k = PGROUND(end - (char*)KTZERO);
- print("%ldM memory: ", (m+k+1024*1024-1)/(1024*1024));
- print("%ldM kernel data, ", (m+k-pkb*1024+1024*1024-1)/(1024*1024));
- print("%ldM user, ", pkb/1024);
- print("%ldM swap\n", vkb/1024);
+ m += PGROUND(end - (char*)KTZERO);
+
+ print("%lldM memory: ", (m+1024*1024-1)/(1024*1024));
+ print("%lldM kernel data, ", (m-u+1024*1024-1)/(1024*1024));
+ print("%lldM user, ", u/(1024*1024));
+ print("%lldM swap\n", v/(1024*1024));
}
void