[libvirt] [PATCH v4 7/8] cpu_conf: xml to cpu definition parse helper
Boris Fiuczynski
fiuczy at linux.ibm.com
Wed Jul 24 16:18:38 UTC 2019
Reviewed-by: Boris Fiuczynski <fiuczy at linux.ibm.com>
On 7/17/19 4:03 PM, Collin Walling wrote:
> Implement an XML to virCPUDefPtr helper that handles
> the ctxt prerequisite for virCPUDefParseXML.
>
> This does not alter any functionality.
>
> Signed-off-by: Collin Walling <walling at linux.ibm.com>
> Reviewed-by: Bjoern Walk <bwalk at linux.ibm.com>
> Reviewed-by: Daniel Henrique Barboza <danielh413 at gmail.com>
> ---
> src/conf/cpu_conf.c | 30 ++++++++++++++++++++++++++++++
> src/conf/cpu_conf.h | 6 ++++++
> src/cpu/cpu.c | 14 +-------------
> src/libvirt_private.syms | 1 +
> 4 files changed, 38 insertions(+), 13 deletions(-)
>
> diff --git a/src/conf/cpu_conf.c b/src/conf/cpu_conf.c
> index 7d16a05..c587aff 100644
> --- a/src/conf/cpu_conf.c
> +++ b/src/conf/cpu_conf.c
> @@ -268,6 +268,36 @@ virCPUDefCopy(const virCPUDef *cpu)
> }
>
>
> +int
> +virCPUDefParseXMLHelper(const char *xml,
> + const char *xpath,
> + virCPUType type,
> + virCPUDefPtr *cpu)
> +{
> + xmlDocPtr doc = NULL;
> + xmlXPathContextPtr ctxt = NULL;
> + int ret = -1;
> +
> + if (!xml) {
> + virReportError(VIR_ERR_INVALID_ARG, "%s", _("missing CPU definition"));
> + goto cleanup;
> + }
> +
> + if (!(doc = virXMLParseStringCtxt(xml, _("(CPU_definition)"), &ctxt)))
> + goto cleanup;
> +
> + if (virCPUDefParseXML(ctxt, xpath, type, cpu) < 0)
> + goto cleanup;
> +
> + ret = 0;
> +
> + cleanup:
> + xmlFreeDoc(doc);
> + xmlXPathFreeContext(ctxt);
> + return ret;
> +}
> +
> +
> /*
> * Parses CPU definition XML from a node pointed to by @xpath. If @xpath is
> * NULL, the current node of @ctxt is used (i.e., it is a shortcut to ".").
> diff --git a/src/conf/cpu_conf.h b/src/conf/cpu_conf.h
> index 19ce816..a0efac8 100644
> --- a/src/conf/cpu_conf.h
> +++ b/src/conf/cpu_conf.h
> @@ -183,6 +183,12 @@ virCPUDefPtr
> virCPUDefCopyWithoutModel(const virCPUDef *cpu);
>
> int
> +virCPUDefParseXMLHelper(const char *xml,
> + const char *xpath,
> + virCPUType type,
> + virCPUDefPtr *cpu);
> +
> +int
> virCPUDefParseXML(xmlXPathContextPtr ctxt,
> const char *xpath,
> virCPUType mode,
> diff --git a/src/cpu/cpu.c b/src/cpu/cpu.c
> index b89462c..31ee887 100644
> --- a/src/cpu/cpu.c
> +++ b/src/cpu/cpu.c
> @@ -111,31 +111,19 @@ virCPUCompareXML(virArch arch,
> const char *xml,
> bool failIncompatible)
> {
> - xmlDocPtr doc = NULL;
> - xmlXPathContextPtr ctxt = NULL;
> virCPUDefPtr cpu = NULL;
> virCPUCompareResult ret = VIR_CPU_COMPARE_ERROR;
>
> VIR_DEBUG("arch=%s, host=%p, xml=%s",
> virArchToString(arch), host, NULLSTR(xml));
>
> - if (!xml) {
> - virReportError(VIR_ERR_INVALID_ARG, "%s", _("missing CPU definition"));
> - goto cleanup;
> - }
> -
> - if (!(doc = virXMLParseStringCtxt(xml, _("(CPU_definition)"), &ctxt)))
> - goto cleanup;
> -
> - if (virCPUDefParseXML(ctxt, NULL, VIR_CPU_TYPE_AUTO, &cpu) < 0)
> + if (virCPUDefParseXMLHelper(xml, NULL, VIR_CPU_TYPE_AUTO, &cpu) < 0)
> goto cleanup;
>
> ret = virCPUCompare(arch, host, cpu, failIncompatible);
>
> cleanup:
> virCPUDefFree(cpu);
> - xmlXPathFreeContext(ctxt);
> - xmlFreeDoc(doc);
>
> return ret;
> }
> diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
> index 4e77cf5..ea5edab 100644
> --- a/src/libvirt_private.syms
> +++ b/src/libvirt_private.syms
> @@ -90,6 +90,7 @@ virCPUDefIsEqual;
> virCPUDefListFree;
> virCPUDefListParse;
> virCPUDefParseXML;
> +virCPUDefParseXMLHelper;
> virCPUDefStealModel;
> virCPUDefUpdateFeature;
> virCPUModeTypeToString;
>
--
Mit freundlichen Grüßen/Kind regards
Boris Fiuczynski
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Matthias Hartmann
Geschäftsführung: Dirk Wittkopp
Sitz der Gesellschaft: Böblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294
More information about the libvir-list
mailing list