X-Git-Url: https://git.xinqibao.xyz/slstatus.git/blobdiff_plain/16a97fbca129bca5656f76191c1b324b1649ec22..11ce8ed0136112138606895754297454f4601e67:/components/ram.c diff --git a/components/ram.c b/components/ram.c index 62e9807..57081d2 100644 --- a/components/ram.c +++ b/components/ram.c @@ -59,6 +59,9 @@ #include #include + #define LOG1024 10 + #define pagetok(size, pageshift) ((size) << (pageshift - LOG1024)) + inline int load_uvmexp(struct uvmexp *uvmexp) { @@ -79,8 +82,7 @@ if (load_uvmexp(&uvmexp)) { free_pages = uvmexp.npages - uvmexp.active; - free = (double) (free_pages * uvmexp.pagesize) / 1024 / - 1024 / 1024; + free = (float)(pagetok(free_pages, uvmexp.pageshift)) / 1024 / 1024; return bprintf("%f", free); } @@ -108,8 +110,7 @@ float total; if (load_uvmexp(&uvmexp)) { - total = (double) (uvmexp.npages * uvmexp.pagesize) / - 1024 / 1024 / 1024; + total = (float)(pagetok(uvmexp.npages, uvmexp.pageshift)) / 1024 / 1024; return bprintf("%f", total); } @@ -123,8 +124,7 @@ float used; if (load_uvmexp(&uvmexp)) { - used = (double) (uvmexp.active * uvmexp.pagesize) / - 1024 / 1024 / 1024; + used = (float)(pagetok(uvmexp.active, uvmexp.pageshift)) / 1024 / 1024; return bprintf("%f", used); }