[libvirt] [PATCH 07/35] qemu: Refactor qemuDomainHelperGetVcpus by reusing virBitmapToDataBuf

Peter Krempa pkrempa at redhat.com
Fri May 29 13:33:28 UTC 2015


Get rid of the unnecessary allocation and copying of the bitmap and
clean up some unnecesary temporary variables.
---
 src/qemu/qemu_driver.c | 20 +++-----------------
 1 file changed, 3 insertions(+), 17 deletions(-)

diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 3fdc448..f32b87e 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -1416,7 +1416,7 @@ static int
 qemuDomainHelperGetVcpus(virDomainObjPtr vm, virVcpuInfoPtr info, int maxinfo,
                          unsigned char *cpumaps, int maplen)
 {
-    int maxcpu, hostcpus;
+    int hostcpus;
     size_t i, v;
     qemuDomainObjPrivatePtr priv = vm->privateData;

@@ -1429,10 +1429,6 @@ qemuDomainHelperGetVcpus(virDomainObjPtr vm, virVcpuInfoPtr info, int maxinfo,
         return -1;
     }

-    maxcpu = maplen * 8;
-    if (maxcpu > hostcpus)
-        maxcpu = hostcpus;
-
     /* Clamp to actual number of vcpus */
     if (maxinfo > priv->nvcpupids)
         maxinfo = priv->nvcpupids;
@@ -1457,25 +1453,15 @@ qemuDomainHelperGetVcpus(virDomainObjPtr vm, virVcpuInfoPtr info, int maxinfo,
         }

         if (cpumaps != NULL) {
-            memset(cpumaps, 0, maplen * maxinfo);
             for (v = 0; v < maxinfo; v++) {
                 unsigned char *cpumap = VIR_GET_CPUMAP(cpumaps, maplen, v);
                 virBitmapPtr map = NULL;
-                unsigned char *tmpmap = NULL;
-                int tmpmapLen = 0;

                 if (virProcessGetAffinity(priv->vcpupids[v],
-                                          &map, maxcpu) < 0)
+                                          &map, hostcpus) < 0)
                     return -1;
-                if (virBitmapToData(map, &tmpmap, &tmpmapLen) < 0) {
-                    virBitmapFree(map);
-                    return -1;
-                }
-                if (tmpmapLen > maplen)
-                    tmpmapLen = maplen;
-                memcpy(cpumap, tmpmap, tmpmapLen);

-                VIR_FREE(tmpmap);
+                virBitmapToDataBuf(map, cpumap, maplen);
                 virBitmapFree(map);
             }
         }
-- 
2.4.1




More information about the libvir-list mailing list