]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
xen: eliminate remaining uses of virDomainCpuSetParse
authorLaine Stump <laine@laine.org>
Mon, 17 Sep 2012 18:38:20 +0000 (14:38 -0400)
committerLaine Stump <laine@laine.org>
Mon, 17 Sep 2012 18:59:37 +0000 (14:59 -0400)
The final patch in Hu Tao's series to enhance virBitmap actually
removes virDomainCpuSetParse and virDomainCpuSetFormat as "no longer
used", and the rest of the series hadn't taken care of two uses of
virDomainCpuSetParse in the xen code.

This patch replaces those with appropriate virBitmap functions. It
should be pushed prior to the patch removing virDomainCpuSetParse.

src/xen/xen_driver.c
src/xen/xend_internal.c

index 3a14d12c89485bc96cb0a28612994663e82fb3bf..0916e49d6b81f8a74c66c764d0dc1e98fd77bd23 100644 (file)
@@ -134,7 +134,7 @@ xenDomainUsedCpus(virDomainPtr dom)
     char *res = NULL;
     int ncpus;
     int nb_vcpu;
-    char *cpulist = NULL;
+    virBitmapPtr cpulist = NULL;
     unsigned char *cpumap = NULL;
     size_t cpumaplen;
     int nb = 0;
@@ -156,7 +156,7 @@ xenDomainUsedCpus(virDomainPtr dom)
     if (xenUnifiedNodeGetInfo(dom->conn, &nodeinfo) < 0)
         return NULL;
 
-    if (VIR_ALLOC_N(cpulist, priv->nbNodeCpus) < 0) {
+    if (!(cpulist = virBitmapNew(priv->nbNodeCpus))) {
         virReportOOMError();
         goto done;
     }
@@ -175,9 +175,11 @@ xenDomainUsedCpus(virDomainPtr dom)
                                           cpumap, cpumaplen)) >= 0) {
         for (n = 0 ; n < ncpus ; n++) {
             for (m = 0 ; m < priv->nbNodeCpus; m++) {
-                if ((cpulist[m] == 0) &&
+                bool used;
+                ignore_value(virBitmapGetBit(cpulist, m, &used));
+                if ((!used) &&
                     (VIR_CPU_USABLE(cpumap, cpumaplen, n, m))) {
-                    cpulist[m] = 1;
+                    ignore_value(virBitmapSetBit(cpulist, m));
                     nb++;
                     /* if all CPU are used just return NULL */
                     if (nb == priv->nbNodeCpus)
@@ -186,11 +188,11 @@ xenDomainUsedCpus(virDomainPtr dom)
                 }
             }
         }
-        res = virDomainCpuSetFormat(cpulist, priv->nbNodeCpus);
+        res = virBitmapFormat(cpulist);
     }
 
 done:
-    VIR_FREE(cpulist);
+    virBitmapFree(cpulist);
     VIR_FREE(cpumap);
     VIR_FREE(cpuinfo);
     return res;
index 984f0404a8586b12afb220ad2ce752e4824d7aa2..95152f8759e1587927b2197a542ec7ff0006b35a 100644 (file)
@@ -1113,7 +1113,7 @@ sexpr_to_xend_topology(const struct sexpr *root,
 {
     const char *nodeToCpu;
     const char *cur;
-    char *cpuset = NULL;
+    virBitmapPtr cpuset = NULL;
     int *cpuNums = NULL;
     int cell, cpu, nb_cpus;
     int n = 0;
@@ -1126,8 +1126,6 @@ sexpr_to_xend_topology(const struct sexpr *root,
     numCpus = sexpr_int(root, "node/nr_cpus");
 
 
-    if (VIR_ALLOC_N(cpuset, numCpus) < 0)
-        goto memory_error;
     if (VIR_ALLOC_N(cpuNums, numCpus) < 0)
         goto memory_error;
 
@@ -1150,17 +1148,21 @@ sexpr_to_xend_topology(const struct sexpr *root,
         virSkipSpacesAndBackslash(&cur);
         if (STRPREFIX(cur, "no cpus")) {
             nb_cpus = 0;
-            for (cpu = 0; cpu < numCpus; cpu++)
-                cpuset[cpu] = 0;
+            if (!(cpuset = virBitmapNew(numCpus)))
+                goto memory_error;
         } else {
-            nb_cpus = virDomainCpuSetParse(cur, 'n', cpuset, numCpus);
+            nb_cpus = virBitmapParse(cur, 'n', &cpuset, numCpus);
             if (nb_cpus < 0)
                 goto error;
         }
 
-        for (n = 0, cpu = 0; cpu < numCpus; cpu++)
-            if (cpuset[cpu] == 1)
+        for (n = 0, cpu = 0; cpu < numCpus; cpu++) {
+            bool used;
+
+            ignore_value(virBitmapGetBit(cpuset, cpu, &used));
+            if (used)
                 cpuNums[n++] = cpu;
+        }
 
         if (virCapabilitiesAddHostNUMACell(caps,
                                            cell,
@@ -1169,20 +1171,20 @@ sexpr_to_xend_topology(const struct sexpr *root,
             goto memory_error;
     }
     VIR_FREE(cpuNums);
-    VIR_FREE(cpuset);
+    virBitmapFree(cpuset);
     return 0;
 
   parse_error:
     virReportError(VIR_ERR_XEN_CALL, "%s", _("topology syntax error"));
   error:
     VIR_FREE(cpuNums);
-    VIR_FREE(cpuset);
+    virBitmapFree(cpuset);
 
     return -1;
 
   memory_error:
     VIR_FREE(cpuNums);
-    VIR_FREE(cpuset);
+    virBitmapFree(cpuset);
     virReportOOMError();
     return -1;
 }