24#ifndef CASA_HOSTINFOIRIX_H
25#define CASA_HOSTINFOIRIX_H
27#if defined(HOSTINFO_DO_IMPLEMENT)
45#include <sys/sysinfo.h>
69#define pagetok(pages) ((((uint64_t)pages) * pagesize) >> 10)
71class HostMachineInfo {
72 friend class HostInfo;
84 ptrdiff_t memory_total;
85 ptrdiff_t memory_used;
86 ptrdiff_t memory_free;
93HostMachineInfo::HostMachineInfo() : valid(1) {
94 pagesize = getpagesize();
96 if ((cpus = sysmp(MP_NPROCS)) == -1) {
97 perror(
"sysmp(MP_NPROCS)");
102 struct rminfo realmem;
103 if (sysmp(MP_SAGET, MPSA_RMINFO, &realmem,
sizeof(realmem)) == -1) {
104 perror(
"sysmp(MP_SAGET,MPSA_RMINFO, ...)");
109 memory_total = pagetok(realmem.physmem);
112void HostMachineInfo::update_info() {
114 struct rminfo realmem;
115 struct sysinfo sysinfo;
119 swapctl(SC_GETFREESWAP, &fswap);
120 swapctl(SC_GETSWAPTOT, &tswap);
122 if (sysmp(MP_SAGET, MPSA_RMINFO, &realmem,
sizeof(realmem)) == -1) {
123 perror(
"sysmp(MP_SAGET,MPSA_RMINFO, ...)");
128 memory_free = pagetok(realmem.freemem);
129 memory_used = memory_total - memory_free;
130 swap_total = tswap / 2;
131 swap_free = fswap / 2;
132 swap_used = swap_total - swap_free;
For temporary backward namespace compatibility, use casa as alias for casacore.