diff options
author | liguang <lig.fnst@cn.fujitsu.com> | 2012-09-20 13:31:57 +0800 |
---|---|---|
committer | Peter Krempa <pkrempa@redhat.com> | 2012-09-20 14:00:06 +0200 |
commit | 740be0061a9dc2580e444485476f96a1f47db8c5 (patch) | |
tree | dae1fe81b5f6d3481c0eca3b883f2d1948a50826 | |
parent | Cleanup of domain_conf sentinels (diff) | |
download | libvirt-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>
-rw-r--r-- | AUTHORS | 1 | ||||
-rw-r--r-- | src/xen/xm_internal.c | 38 |
2 files changed, 4 insertions, 35 deletions
@@ -265,6 +265,7 @@ Patches have also been contributed by: Jasper Lievisse Adriaanse <jasper@humppa.nl> Paul Eggert <eggert@cs.ucla.edu> Dwight Engen <dwight.engen@oracle.com> + liguang <lig.fnst@cn.fujitsu.com> [....send patches to get your name here....] 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; } |