[libvirt] [PATCH 4/6] virsh: Extract cpumap formatting in cmdVcpuinfo

Peter Krempa pkrempa at redhat.com
Tue Oct 11 16:08:04 UTC 2016


cmdVcpuinfo will be split in upcomming patches thus extract the common
code that formats pinning cpumaps for the vcpus.
---
 tools/virsh-domain.c | 52 +++++++++++++++++++++++++++++++++++-----------------
 1 file changed, 35 insertions(+), 17 deletions(-)

diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
index 5fdad1b..8e1b9ed 100644
--- a/tools/virsh-domain.c
+++ b/tools/virsh-domain.c
@@ -6280,6 +6280,36 @@ static const vshCmdOptDef opts_vcpuinfo[] = {
     {.name = NULL}
 };

+
+static int
+virshVcpuinfoPrintAffinity(vshControl *ctl,
+                           const unsigned char *cpumap,
+                           int maxcpu,
+                           bool pretty)
+{
+    char *str = NULL;
+    size_t i;
+    int ret = -1;
+
+    vshPrint(ctl, "%-15s ", _("CPU Affinity:"));
+    if (pretty) {
+        if (!(str = virBitmapDataToString(cpumap, VIR_CPU_MAPLEN(maxcpu))))
+            goto cleanup;
+        vshPrint(ctl, _("%s (out of %d)"), str, maxcpu);
+    } else {
+        for (i = 0; i < maxcpu; i++)
+            vshPrint(ctl, "%c", VIR_CPU_USED(cpumap, i) ? 'y' : '-');
+    }
+    vshPrint(ctl, "\n");
+
+    ret = 0;
+
+ cleanup:
+    VIR_FREE(str);
+    return ret;
+}
+
+
 static bool
 cmdVcpuinfo(vshControl *ctl, const vshCmd *cmd)
 {
@@ -6291,7 +6321,7 @@ cmdVcpuinfo(vshControl *ctl, const vshCmd *cmd)
     size_t cpumaplen;
     bool ret = false;
     bool pretty = vshCommandOptBool(cmd, "pretty");
-    int n, m;
+    int n;
     virshControlPtr priv = ctl->privData;

     if (!(dom = virshCommandOptDomain(ctl, cmd, NULL)))
@@ -6340,23 +6370,11 @@ cmdVcpuinfo(vshControl *ctl, const vshCmd *cmd)
             vshPrint(ctl, "%-15s %s\n", _("State:"), _("N/A"));
             vshPrint(ctl, "%-15s %s\n", _("CPU time"), _("N/A"));
         }
-        vshPrint(ctl, "%-15s ", _("CPU Affinity:"));
-        if (pretty) {
-            char *str;

-            str = virBitmapDataToString(VIR_GET_CPUMAP(cpumaps, cpumaplen, n),
-                                        cpumaplen);
-            if (!str)
-                goto cleanup;
-            vshPrint(ctl, _("%s (out of %d)"), str, maxcpu);
-            VIR_FREE(str);
-        } else {
-            for (m = 0; m < maxcpu; m++) {
-                vshPrint(ctl, "%c",
-                         VIR_CPU_USABLE(cpumaps, cpumaplen, n, m) ? 'y' : '-');
-            }
-        }
-        vshPrint(ctl, "\n");
+        if (virshVcpuinfoPrintAffinity(ctl, VIR_GET_CPUMAP(cpumaps, cpumaplen, n),
+                                       maxcpu, pretty) < 0)
+            goto cleanup;
+
         if (n < (ncpus - 1))
             vshPrint(ctl, "\n");
     }
-- 
2.10.0




More information about the libvir-list mailing list