diff --git a/src/nodeinfo.c b/src/nodeinfo.c index c88f86c..1fa3e05 100644 --- a/src/nodeinfo.c +++ b/src/nodeinfo.c @@ -38,6 +38,8 @@ # include # include # include +#elif defined(__linux__) +# include #endif #include "c-ctype.h" @@ -1042,6 +1044,7 @@ int nodeGetInfo(virNodeInfoPtr nodeinfo) { int ret = -1; FILE *cpuinfo = fopen(CPUINFO_PATH, "r"); + struct sysinfo si; if (!cpuinfo) { virReportSystemError(errno, _("cannot open %s"), CPUINFO_PATH); @@ -1053,7 +1056,11 @@ int nodeGetInfo(virNodeInfoPtr nodeinfo) goto cleanup; /* Convert to KB. */ - nodeinfo->memory = physmem_total() / 1024; + if (sysinfo(&si) == 0) { + nodeinfo->memory = si.totalram / 1024; + } else { + nodeinfo->memory = physmem_total() / 1024; + } cleanup: VIR_FORCE_FCLOSE(cpuinfo);