diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2014-04-15 21:34:41 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2014-04-15 21:34:41 +0200 |
commit | 66aa9490398fa43d1bbec73f0e12899582a73fe7 (patch) | |
tree | 17f87e6d0e7c9aa1ba9781379dd6f0d8583d0ede /sys/src/9/port/page.c | |
parent | 712ce5d9fff96a46f51b37a65532022b1a9b833c (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.c | 18 |
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 |