[libvirt] [PATCH 07/34] conf: Add helper to retrieve bitmap of active vcpus for a definition

Peter Krempa pkrempa at redhat.com
Thu Jan 14 16:26:55 UTC 2016


In some cases it may be better to have a bitmap representing state of
individual vcpus rather than iterating the definition. The new helper
creates a bitmap representing the state from the domain definition.
---
 src/conf/domain_conf.c   | 24 ++++++++++++++++++++++++
 src/conf/domain_conf.h   |  1 +
 src/libvirt_private.syms |  1 +
 3 files changed, 26 insertions(+)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index a9706b0..36286d3 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -1374,6 +1374,30 @@ virDomainDefGetVcpus(const virDomainDef *def)
 }


+/**
+ * virDomainDefGetVcpumap:
+ * @def: domain definition
+ *
+ * Returns a bitmap representing state of individual vcpus.
+ */
+virBitmapPtr
+virDomainDefGetVcpumap(const virDomainDef *def)
+{
+    virBitmapPtr ret = NULL;
+    size_t i;
+
+    if (!(ret = virBitmapNew(def->maxvcpus)))
+        return NULL;
+
+    for (i = 0; i < def->maxvcpus; i++) {
+        if (def->vcpus[i].online)
+            ignore_value(virBitmapSetBit(ret, i));
+    }
+
+    return ret;
+}
+
+
 virDomainVcpuInfoPtr
 virDomainDefGetVcpu(virDomainDefPtr def,
                     unsigned int vcpu)
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 0141009..f15b558 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -2358,6 +2358,7 @@ bool virDomainDefHasVcpusOffline(const virDomainDef *def);
 unsigned int virDomainDefGetVcpusMax(const virDomainDef *def);
 int virDomainDefSetVcpus(virDomainDefPtr def, unsigned int vcpus);
 unsigned int virDomainDefGetVcpus(const virDomainDef *def);
+virBitmapPtr virDomainDefGetVcpumap(const virDomainDef *def);
 virDomainVcpuInfoPtr virDomainDefGetVcpu(virDomainDefPtr def, unsigned int vcpu)
     ATTRIBUTE_RETURN_CHECK;

diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 83f6e2c..e8efdc6 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -217,6 +217,7 @@ virDomainDefGetMemoryActual;
 virDomainDefGetMemoryInitial;
 virDomainDefGetSecurityLabelDef;
 virDomainDefGetVcpu;
+virDomainDefGetVcpumap;
 virDomainDefGetVcpus;
 virDomainDefGetVcpusMax;
 virDomainDefHasDeviceAddress;
-- 
2.6.2




More information about the libvir-list mailing list