Xinqi Bao's Git
1 /* See LICENSE file for copyright and license details. */
4 #include <sys/sysctl.h>
8 #include "../../util.h"
11 load_uvmexp(struct uvmexp
*uvmexp
)
13 int uvmexp_mib
[] = {CTL_VM
, VM_UVMEXP
};
16 size
= sizeof(*uvmexp
);
18 return sysctl(uvmexp_mib
, 2, uvmexp
, &size
, NULL
, 0) >= 0 ? 1 : 0;
28 if (load_uvmexp(&uvmexp
)) {
29 free_pages
= uvmexp
.npages
- uvmexp
.active
;
30 free
= (double) (free_pages
* uvmexp
.pagesize
) / 1024 / 1024 / 1024;
31 return bprintf("%f", free
);
43 if (load_uvmexp(&uvmexp
)) {
44 percent
= uvmexp
.active
* 100 / uvmexp
.npages
;
45 return bprintf("%d", percent
);
57 if (load_uvmexp(&uvmexp
)) {
58 total
= (double) (uvmexp
.npages
* uvmexp
.pagesize
) / 1024 / 1024 / 1024;
59 return bprintf("%f", total
);
71 if (load_uvmexp(&uvmexp
)) {
72 used
= (double) (uvmexp
.active
* uvmexp
.pagesize
) / 1024 / 1024 / 1024;
73 return bprintf("%f", used
);