From 740be0061a9dc2580e444485476f96a1f47db8c5 Mon Sep 17 00:00:00 2001 From: liguang Date: Thu, 20 Sep 2012 13:31:57 +0800 Subject: [PATCH] simplify xenXMDomainPinVcpu function supersede tedious statements getting cpu bitmap from parameter cpumap by virBitmapNewData function Signed-off-by: liguang --- AUTHORS | 1 + src/xen/xm_internal.c | 38 +++----------------------------------- 2 files changed, 4 insertions(+), 35 deletions(-) diff --git a/AUTHORS b/AUTHORS index 0a43c0ed9b..75b316c30e 100644 --- a/AUTHORS +++ b/AUTHORS @@ -265,6 +265,7 @@ Patches have also been contributed by: Jasper Lievisse Adriaanse Paul Eggert Dwight Engen + liguang [....send patches to get your name here....] diff --git a/src/xen/xm_internal.c b/src/xen/xm_internal.c index a4dec62290..97c19ef4a1 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; }