aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorliguang <lig.fnst@cn.fujitsu.com>2012-09-20 13:31:57 +0800
committerPeter Krempa <pkrempa@redhat.com>2012-09-20 14:00:06 +0200
commit740be0061a9dc2580e444485476f96a1f47db8c5 (patch)
treedae1fe81b5f6d3481c0eca3b883f2d1948a50826 /src
parentCleanup of domain_conf sentinels (diff)
downloadlibvirt-740be0061a9dc2580e444485476f96a1f47db8c5.tar.gz
libvirt-740be0061a9dc2580e444485476f96a1f47db8c5.tar.bz2
libvirt-740be0061a9dc2580e444485476f96a1f47db8c5.zip
simplify xenXMDomainPinVcpu function
supersede tedious statements getting cpu bitmap from parameter cpumap by virBitmapNewData function Signed-off-by: liguang <lig.fnst@cn.fujitsu.com>
Diffstat (limited to 'src')
-rw-r--r--src/xen/xm_internal.c38
1 files changed, 3 insertions, 35 deletions
diff --git a/src/xen/xm_internal.c b/src/xen/xm_internal.c
index a4dec6229..97c19ef4a 100644
--- a/src/xen/xm_internal.c
+++ b/src/xen/xm_internal.c
@@ -827,12 +827,7 @@ int xenXMDomainPinVcpu(virDomainPtr domain,
xenUnifiedPrivatePtr priv;
const char *filename;
xenXMConfCachePtr entry;
- virBuffer mapbuf = VIR_BUFFER_INITIALIZER;
- char *mapstr = NULL, *mapsave = NULL;
- int i, j, n, comma = 0;
int ret = -1;
- virBitmapPtr cpuset = NULL;
- int maxcpu = XEN_MAX_PHYSICAL_CPU;
if (domain == NULL || domain->conn == NULL || domain->name == NULL
|| cpumap == NULL || maplen < 1 || maplen > (int)sizeof(cpumap_t)) {
@@ -863,43 +858,16 @@ int xenXMDomainPinVcpu(virDomainPtr domain,
goto cleanup;
}
- /* from bit map, build character string of mapped CPU numbers */
- for (i = 0; i < maplen; i++)
- for (j = 0; j < 8; j++)
- if ((cpumap[i] & (1 << j))) {
- n = i*8 + j;
-
- if (comma)
- virBufferAddLit (&mapbuf, ",");
- comma = 1;
-
- virBufferAsprintf (&mapbuf, "%d", n);
- }
-
- if (virBufferError(&mapbuf)) {
- virBufferFreeAndReset(&mapbuf);
- virReportOOMError();
- goto cleanup;
- }
-
- mapstr = virBufferContentAndReset(&mapbuf);
- mapsave = mapstr;
-
- if (virBitmapParse(mapstr, 0, &cpuset, maxcpu) < 0)
- goto cleanup;
-
virBitmapFree(entry->def->cpumask);
- entry->def->cpumask = cpuset;
- cpuset = NULL;
-
+ entry->def->cpumask = virBitmapNewData(cpumap, maplen);
+ if (!entry->def->cpumask)
+ goto cleanup;
if (xenXMConfigSaveFile(domain->conn, entry->filename, entry->def) < 0)
goto cleanup;
ret = 0;
cleanup:
- VIR_FREE(mapsave);
- VIR_FREE(cpuset);
xenUnifiedUnlock(priv);
return ret;
}