[libvirt] [PATCH 2/7] cpu: Use virCPUDefListParse in cpuBaselineXML

Jiri Denemark jdenemar at redhat.com
Thu Sep 14 10:57:15 UTC 2017


Signed-off-by: Jiri Denemark <jdenemar at redhat.com>
---
 src/cpu/cpu.c | 52 ++++++----------------------------------------------
 1 file changed, 6 insertions(+), 46 deletions(-)

diff --git a/src/cpu/cpu.c b/src/cpu/cpu.c
index 96160901e1..bf3c6d53dd 100644
--- a/src/cpu/cpu.c
+++ b/src/cpu/cpu.c
@@ -523,11 +523,9 @@ cpuBaselineXML(const char **xmlCPUs,
                unsigned int nmodels,
                unsigned int flags)
 {
-    xmlDocPtr doc = NULL;
-    xmlXPathContextPtr ctxt = NULL;
     virCPUDefPtr *cpus = NULL;
     virCPUDefPtr cpu = NULL;
-    char *cpustr;
+    char *cpustr = NULL;
     size_t i;
 
     VIR_DEBUG("ncpus=%u, nmodels=%u", ncpus, nmodels);
@@ -535,67 +533,29 @@ cpuBaselineXML(const char **xmlCPUs,
     virCheckFlags(VIR_CONNECT_BASELINE_CPU_EXPAND_FEATURES |
                   VIR_CONNECT_BASELINE_CPU_MIGRATABLE, NULL);
 
-    if (xmlCPUs) {
-        for (i = 0; i < ncpus; i++)
-            VIR_DEBUG("xmlCPUs[%zu]=%s", i, NULLSTR(xmlCPUs[i]));
-    }
     if (models) {
         for (i = 0; i < nmodels; i++)
             VIR_DEBUG("models[%zu]=%s", i, NULLSTR(models[i]));
     }
 
-    if (xmlCPUs == NULL && ncpus != 0) {
-        virReportError(VIR_ERR_INTERNAL_ERROR,
-                       "%s", _("nonzero ncpus doesn't match with NULL xmlCPUs"));
-        return NULL;
-    }
-
-    if (ncpus < 1) {
-        virReportError(VIR_ERR_INVALID_ARG, "%s", _("No CPUs given"));
-        return NULL;
-    }
-
-    if (VIR_ALLOC_N(cpus, ncpus))
-        goto error;
-
-    for (i = 0; i < ncpus; i++) {
-        if (!(doc = virXMLParseStringCtxt(xmlCPUs[i], _("(CPU_definition)"), &ctxt)))
-            goto error;
-
-        if (virCPUDefParseXML(ctxt, NULL, VIR_CPU_TYPE_HOST, &cpus[i]) < 0)
-            goto error;
-
-        xmlXPathFreeContext(ctxt);
-        xmlFreeDoc(doc);
-        ctxt = NULL;
-        doc = NULL;
-    }
+    if (!(cpus = virCPUDefListParse(xmlCPUs, ncpus, VIR_CPU_TYPE_HOST)))
+        goto cleanup;
 
     if (!(cpu = cpuBaseline(cpus, ncpus, models, nmodels,
                             !!(flags & VIR_CONNECT_BASELINE_CPU_MIGRATABLE))))
-        goto error;
+        goto cleanup;
 
     if ((flags & VIR_CONNECT_BASELINE_CPU_EXPAND_FEATURES) &&
         virCPUExpandFeatures(cpus[0]->arch, cpu) < 0)
-        goto error;
+        goto cleanup;
 
     cpustr = virCPUDefFormat(cpu, NULL, false);
 
  cleanup:
-    if (cpus) {
-        for (i = 0; i < ncpus; i++)
-            virCPUDefFree(cpus[i]);
-        VIR_FREE(cpus);
-    }
+    virCPUDefListFree(cpus);
     virCPUDefFree(cpu);
-    xmlXPathFreeContext(ctxt);
-    xmlFreeDoc(doc);
 
     return cpustr;
-
- error:
-    cpustr = NULL;
-    goto cleanup;
 }
 
 
-- 
2.14.1




More information about the libvir-list mailing list