---
src/nodeinfo.c | 9 ++-------
src/util/virnuma.c | 24 +++++++++++++++++++++++-
src/util/virnuma.h | 2 ++
3 files changed, 27 insertions(+), 8 deletions(-)
diff --git a/src/nodeinfo.c b/src/nodeinfo.c
index c73eee4..4f0d412 100644
--- a/src/nodeinfo.c
+++ b/src/nodeinfo.c
@@ -1513,11 +1513,6 @@ nodeGetFreeMemoryFake(void)
}
#if WITH_NUMACTL
-# if LIBNUMA_API_VERSION <= 1
-# define NUMA_MAX_N_CPUS 4096
-# else
-# define NUMA_MAX_N_CPUS (numa_all_cpus_ptr->size)
-# endif
# define n_bits(var) (8 * sizeof(var))
# define MASK_CPU_ISSET(mask, cpu) \
@@ -1537,7 +1532,7 @@ virNodeGetSiblingsList(const char *dir, int cpu_id)
if (virFileReadAll(path, SYSFS_THREAD_SIBLINGS_LIST_LENGTH_MAX, &buf) < 0)
goto cleanup;
- if (virBitmapParse(buf, 0, &ret, NUMA_MAX_N_CPUS) < 0)
+ if (virBitmapParse(buf, 0, &ret, virNumaGetMaxCPUs()) < 0)
goto cleanup;
cleanup:
@@ -1580,7 +1575,7 @@ nodeCapsInitNUMA(virCapsPtr caps)
unsigned long long memory;
virCapsHostNUMACellCPUPtr cpus = NULL;
int ret = -1;
- int max_n_cpus = NUMA_MAX_N_CPUS;
+ int max_n_cpus = virNumaGetMaxCPUs();
int mask_n_bytes = max_n_cpus / 8;
int ncpus = 0;
bool topology_failed = false;
diff --git a/src/util/virnuma.c b/src/util/virnuma.c
index 15a18e9..0530d64 100644
--- a/src/util/virnuma.c
+++ b/src/util/virnuma.c
@@ -21,10 +21,18 @@
#include <config.h>
+#define NUMA_MAX_N_CPUS 4096
+
#if WITH_NUMACTL
# define NUMA_VERSION1_COMPATIBILITY 1
# include <numa.h>
-#endif
+
+# if LIBNUMA_API_VERSION > 1
+# undef NUMA_MAX_N_CPUS
+# define NUMA_MAX_N_CPUS (numa_all_cpus_ptr->size)
+# endif
+
+#endif /* WITH_NUMACTL */
#include "virnuma.h"
#include "vircommand.h"
@@ -288,3 +296,17 @@ virNumaGetNodeMemory(int node ATTRIBUTE_UNUSED,
return -1;
}
#endif
+
+
+/**
+ * virNumaGetMaxCPUs:
+ *
+ * Get the maximum count of CPUs supportable in the host.
+ *
+ * Returns the count of CPUs supported.
+ */
+unsigned int
+virNumaGetMaxCPUs(void)
+{
+ return NUMA_MAX_N_CPUS;
+}
diff --git a/src/util/virnuma.h b/src/util/virnuma.h
index 7640d1b..62b2c0a 100644
--- a/src/util/virnuma.h
+++ b/src/util/virnuma.h
@@ -62,4 +62,6 @@ int virNumaGetNodeMemory(int node,
unsigned long long *memsize,
unsigned long long *memfree);
+unsigned int virNumaGetMaxCPUs(void);
+
#endif /* __VIR_NUMA_H__ */
--
1.8.3.2