X-Git-Url: https://git.xinqibao.xyz/slstatus.git/blobdiff_plain/9750a3d731cd381e832bcacf1d03e48ddb46cc16..bb613923865e6a702e35ad13fdba19cbc7c20c2c:/components/ram.c diff --git a/components/ram.c b/components/ram.c index 5611022..57081d2 100644 --- a/components/ram.c +++ b/components/ram.c @@ -54,11 +54,14 @@ NULL; } #elif defined(__OpenBSD__) - #include - #include #include + #include + #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); }