]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
simplify xenXMDomainPinVcpu function
authorliguang <lig.fnst@cn.fujitsu.com>
Thu, 20 Sep 2012 05:31:57 +0000 (13:31 +0800)
committerPeter Krempa <pkrempa@redhat.com>
Thu, 20 Sep 2012 12:00:06 +0000 (14:00 +0200)
supersede tedious statements getting cpu bitmap
from parameter cpumap by virBitmapNewData function

Signed-off-by: liguang <lig.fnst@cn.fujitsu.com>
AUTHORS
src/xen/xm_internal.c

diff --git a/AUTHORS b/AUTHORS
index 0a43c0ed9be683ae44338e1493a57ebb5d68b9fe..75b316c30e6e8ba50d0ee03094139cb8008c44b7 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -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....]
 
index a4dec622905f77a450baa206309dd51e23727d07..97c19ef4a15e2a95ee4d267199efa45bdc66f211 100644 (file)
@@ -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;
 }