The nodeGetInfo() method currently has its own code for getting memory size in KB, that basically just re-invents what nodeGetMemory already does. Remove it and just call nodeGetMemory, converting its result from bytes to KB, allowing removal of more platform specific conditional code. --- src/nodeinfo.c | 38 +++++--------------------------------- 1 file changed, 5 insertions(+), 33 deletions(-) diff --git a/src/nodeinfo.c b/src/nodeinfo.c index 1288543..bc5400f 100644 --- a/src/nodeinfo.c +++ b/src/nodeinfo.c @@ -81,33 +81,6 @@ appleFreebsdNodeGetCPUCount(void) return ncpu; } - -/* VIR_HW_PHYSMEM - the resulting value of HW_PHYSMEM of FreeBSD - * is 64 bits while that of Mac OS X is still 32 bits. - * Mac OS X provides HW_MEMSIZE for 64 bits version of HW_PHYSMEM - * since 10.6.8 (Snow Leopard) at least. - */ -# ifdef HW_MEMSIZE -# define VIR_HW_PHYSMEM HW_MEMSIZE -# else -# define VIR_HW_PHYSMEM HW_PHYSMEM -# endif -static int -appleFreebsdNodeGetMemorySize(unsigned long *memory) -{ - int mib[2] = { CTL_HW, VIR_HW_PHYSMEM }; - unsigned long physmem; - size_t len = sizeof(physmem); - - if (sysctl(mib, 2, &physmem, &len, NULL, 0) == -1) { - virReportSystemError(errno, "%s", _("cannot obtain memory size")); - return -1; - } - - *memory = (unsigned long)(physmem / 1024); - - return 0; -} #endif /* defined(__FreeBSD__) || defined(__APPLE__) */ #ifdef __FreeBSD__ @@ -1192,12 +1165,17 @@ int nodeGetInfo(virNodeInfoPtr nodeinfo) { virArch hostarch = virArchFromHost(); + unsigned long long memorybytes; memset(nodeinfo, 0, sizeof(*nodeinfo)); if (virStrcpyStatic(nodeinfo->model, virArchToString(hostarch)) == NULL) return -1; + if (nodeGetMemory(&memorybytes, NULL) < 0) + return -1; + nodeinfo->memory = memorybytes / 1024; + #ifdef __linux__ { int ret = -1; @@ -1213,9 +1191,6 @@ nodeGetInfo(virNodeInfoPtr nodeinfo) if (ret < 0) goto cleanup; - /* Convert to KB. */ - nodeinfo->memory = physmem_total() / 1024; - cleanup: VIR_FORCE_FCLOSE(cpuinfo); return ret; @@ -1251,9 +1226,6 @@ nodeGetInfo(virNodeInfoPtr nodeinfo) nodeinfo->mhz = cpu_freq / 1000000; # endif - if (appleFreebsdNodeGetMemorySize(&nodeinfo->memory) < 0) - return -1; - return 0; } #else -- 2.5.5 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list