[libvirt] [PATCH v2 7/8] cpu_conf: xml to cpu definition parse helper
Daniel Henrique Barboza
danielhb413 at gmail.com
Mon Apr 29 18:56:49 UTC 2019
On 4/26/19 5:22 PM, walling at linux.ibm.com wrote:
> From: Collin Walling <walling at linux.ibm.com>
>
> 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 <danielhb413 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 bd2beab..d5f6fa1 100644
> --- a/src/conf/cpu_conf.c
> +++ b/src/conf/cpu_conf.c
> @@ -260,6 +260,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 c98db65..8d06b6f 100644
> --- a/src/conf/cpu_conf.h
> +++ b/src/conf/cpu_conf.h
> @@ -182,6 +182,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 a223ff0..6eca956 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 a03cf0b..1308c7b 100644
> --- a/src/libvirt_private.syms
> +++ b/src/libvirt_private.syms
> @@ -88,6 +88,7 @@ virCPUDefIsEqual;
> virCPUDefListFree;
> virCPUDefListParse;
> virCPUDefParseXML;
> +virCPUDefParseXMLHelper;
> virCPUDefStealModel;
> virCPUDefUpdateFeature;
> virCPUModeTypeToString;
More information about the libvir-list
mailing list