[libvirt] [PATCH 05/10] nodeinfo: Add out parameter to nodeGetPresentCPUBitmap()

Andrea Bolognani abologna at redhat.com
Fri Jul 17 16:13:24 UTC 2015


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




More information about the libvir-list mailing list