30#ifndef CASA_HOSTINFOBSD_H
31#define CASA_HOSTINFOBSD_H
33#if defined(HOSTINFO_DO_IMPLEMENT)
36#include <sys/sysctl.h>
37#include <sys/vmmeter.h>
72class HostMachineInfo {
73 friend class HostInfo;
81 ptrdiff_t memory_total;
82 ptrdiff_t memory_used;
83 ptrdiff_t memory_free;
92HostMachineInfo::HostMachineInfo() : valid(1) {
95 pagesize = getpagesize();
96 page_kb = pagesize / 1024;
99 if (sysctlbyname(
"hw.ncpu", &cpus, &len, NULL, 0) == -1) perror(
"sysctl");
101 len =
sizeof(memory_total);
102 if (sysctlbyname(
"hw.physmem", &memory_total, &len, NULL, 0) == -1)
105 memory_total /= 1024;
108void HostMachineInfo::update_info() {
111 struct vmtotal total;
112 struct kvm_swap swapary[1];
117 if (sysctlbyname(
"vm.vmtotal", &total, &len, NULL, 0) == -1)
120 memory_used = total.t_rm * page_kb;
121 memory_free = total.t_free * page_kb;
123 kd = kvm_open(NULL, _PATH_DEVNULL, NULL, O_RDONLY,
"kvm_open");
125 kvm_getswapinfo(kd, swapary, 1, 0);
127 swap_total = swapary[0].ksw_total * page_kb;
128 swap_used = swapary[0].ksw_used * page_kb;
129 swap_free = swap_total - swap_used;
For temporary backward namespace compatibility, use casa as alias for casacore.