]> xenbits.xensource.com Git - libvirt.git/commitdiff
conf: Add helper to retrieve bitmap of active vcpus for a definition
authorPeter Krempa <pkrempa@redhat.com>
Mon, 7 Dec 2015 05:36:37 +0000 (06:36 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Wed, 3 Feb 2016 12:10:04 +0000 (13:10 +0100)
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
src/conf/domain_conf.h
src/libvirt_private.syms

index 1ea74a6ad6df3fb1ba55445bf77f0d02e1210aba..ead76a1d710a6a2d81177c36390077e533726f11 100644 (file)
@@ -1374,6 +1374,30 @@ virDomainDefGetVcpus(const virDomainDef *def)
 }
 
 
+/**
+ * virDomainDefGetOnlineVcpumap:
+ * @def: domain definition
+ *
+ * Returns a bitmap representing state of individual vcpus.
+ */
+virBitmapPtr
+virDomainDefGetOnlineVcpumap(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)
index 014100980b0bde11440b801996b52a80b653ff76..9fdfdf28f3b19933e7be5429fcbbb1bd0657564d 100644 (file)
@@ -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 virDomainDefGetOnlineVcpumap(const virDomainDef *def);
 virDomainVcpuInfoPtr virDomainDefGetVcpu(virDomainDefPtr def, unsigned int vcpu)
     ATTRIBUTE_RETURN_CHECK;
 
index 3d0ec9d786b6032ee974aabcd8dc661031863382..1083782c0385875eb56024d2befa0d3d2a82ea7a 100644 (file)
@@ -217,6 +217,7 @@ virDomainDefFree;
 virDomainDefGetDefaultEmulator;
 virDomainDefGetMemoryActual;
 virDomainDefGetMemoryInitial;
+virDomainDefGetOnlineVcpumap;
 virDomainDefGetSecurityLabelDef;
 virDomainDefGetVcpu;
 virDomainDefGetVcpus;