This aligns it with nodeGetCPUBitmap(), which already has a
similar out parameters, and relieves users of this API from the
need to call virBitmapSize() on the returned bitmap.
---
src/nodeinfo.c | 8 ++++++--
src/nodeinfo.h | 6 ++++--
src/util/vircgroup.c | 4 +---
3 files changed, 11 insertions(+), 7 deletions(-)
diff --git a/src/nodeinfo.c b/src/nodeinfo.c
index 5aa0607..7aecc8f 100644
--- a/src/nodeinfo.c
+++ b/src/nodeinfo.c
@@ -440,7 +440,7 @@ virNodeParseNode(const char *sysfs_prefix,
goto cleanup;
}
- present_cpumap = nodeGetPresentCPUBitmap(sysfs_prefix);
+ present_cpumap = nodeGetPresentCPUBitmap(sysfs_prefix, NULL);
if (!present_cpumap)
goto cleanup;
@@ -1280,7 +1280,8 @@ nodeGetCPUCount(const char *sysfs_prefix ATTRIBUTE_UNUSED)
}
virBitmapPtr
-nodeGetPresentCPUBitmap(const char *sysfs_prefix ATTRIBUTE_UNUSED)
+nodeGetPresentCPUBitmap(const char *sysfs_prefix ATTRIBUTE_UNUSED,
+ int *size ATTRIBUTE_UNUSED)
{
#ifdef __linux__
virBitmapPtr present_cpus = NULL;
@@ -1313,6 +1314,9 @@ nodeGetPresentCPUBitmap(const char *sysfs_prefix ATTRIBUTE_UNUSED)
cleanup:
VIR_FREE(present_path);
+ if (present_cpus && size)
+ *size = npresent_cpus;
+
return present_cpus;
#endif
virReportError(VIR_ERR_NO_SUPPORT, "%s",
diff --git a/src/nodeinfo.h b/src/nodeinfo.h
index 4f983c2..e83db7b 100644
--- a/src/nodeinfo.h
+++ b/src/nodeinfo.h
@@ -44,8 +44,10 @@ int nodeGetCellsFreeMemory(unsigned long long *freeMems,
int nodeGetMemory(unsigned long long *mem,
unsigned long long *freeMem);
-virBitmapPtr nodeGetPresentCPUBitmap(const char *sysfs_prefix);
-virBitmapPtr nodeGetCPUBitmap(const char *sysfs_prefix, int *max_id);
+virBitmapPtr nodeGetPresentCPUBitmap(const char *sysfs_prefix,
+ int *size);
+virBitmapPtr nodeGetCPUBitmap(const char *sysfs_prefix,
+ int *size);
int nodeGetCPUCount(const char *sysfs_prefix);
int nodeGetMemoryParameters(virTypedParameterPtr params,
diff --git a/src/util/vircgroup.c b/src/util/vircgroup.c
index 0ef2d29..5011f9c 100644
--- a/src/util/vircgroup.c
+++ b/src/util/vircgroup.c
@@ -3043,11 +3043,9 @@ virCgroupGetPercpuStats(virCgroupPtr group,
}
/* To parse account file, we need to know how many cpus are present. */
- if (!(cpumap = nodeGetPresentCPUBitmap(NULL)))
+ if (!(cpumap = nodeGetPresentCPUBitmap(NULL, &total_cpus)))
return rv;
- total_cpus = virBitmapSize(cpumap);
-
if (ncpus == 0) {
rv = total_cpus;
goto cleanup;
--
2.4.3