aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLaine Stump <laine@laine.org>2012-09-17 14:38:20 -0400
committerLaine Stump <laine@laine.org>2012-09-17 14:59:37 -0400
commit58d372d441e8321a53f44d5a55f883afe3ba3792 (patch)
treea714491557d5cac91283d5493965712322c6e025 /src
parentuse virBitmap to store nodeinfo. (diff)
downloadlibvirt-58d372d441e8321a53f44d5a55f883afe3ba3792.tar.gz
libvirt-58d372d441e8321a53f44d5a55f883afe3ba3792.tar.bz2
libvirt-58d372d441e8321a53f44d5a55f883afe3ba3792.zip
xen: eliminate remaining uses of virDomainCpuSetParse
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.
Diffstat (limited to 'src')
-rw-r--r--src/xen/xen_driver.c14
-rw-r--r--src/xen/xend_internal.c24
2 files changed, 21 insertions, 17 deletions
diff --git a/src/xen/xen_driver.c b/src/xen/xen_driver.c
index 3a14d12c8..0916e49d6 100644
--- a/src/xen/xen_driver.c
+++ b/src/xen/xen_driver.c
@@ -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;
diff --git a/src/xen/xend_internal.c b/src/xen/xend_internal.c
index 984f0404a..95152f875 100644
--- a/src/xen/xend_internal.c
+++ b/src/xen/xend_internal.c
@@ -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;
}