[libvirt] [PATCH 2/2] XML parsing/formating code for CPU flags
Daniel Veillard
veillard at redhat.com
Thu Nov 5 10:54:04 UTC 2009
On Tue, Nov 03, 2009 at 04:40:01PM +0100, Jiri Denemark wrote:
>
> Signed-off-by: Jiri Denemark <jdenemar at redhat.com>
> ---
> include/libvirt/virterror.h | 1 +
> src/Makefile.am | 9 +-
> src/conf/capabilities.c | 31 ++++-
> src/conf/capabilities.h | 6 +
> src/conf/cpu_conf.c | 345 +++++++++++++++++++++++++++++++++++++++++++
> src/conf/cpu_conf.h | 110 ++++++++++++++
> src/conf/domain_conf.c | 15 ++
> src/conf/domain_conf.h | 2 +
> src/libvirt_private.syms | 8 +
> src/util/virterror.c | 3 +
> 10 files changed, 527 insertions(+), 3 deletions(-)
> create mode 100644 src/conf/cpu_conf.c
> create mode 100644 src/conf/cpu_conf.h
[...]
> diff --git a/src/conf/cpu_conf.c b/src/conf/cpu_conf.c
[...]
> + /*
> + * sockets, cores, and threads must all be either zero or nonzero;
> + * if all of them are zero, we don't care about topology
> + */
> + if ((!def->sockets || !def->cores || !def->threads) && !all_zero) {
> + virCPUReportError(conn, VIR_ERR_INTERNAL_ERROR,
> + "%s", _("Invalid CPU topology"));
> + goto error;
> + }
> + }
Hum, I would just ban all being 0 and drop the element in that case
which would match my suggestion at the schemas level.
> + n = virXPathNodeSet(conn, "./feature", ctxt, &nodes);
> + if (n < 0)
> + goto error;
> +
> + if (n > 0) {
> + if (VIR_ALLOC_N(def->features, n) < 0)
> + goto no_memory;
> + def->nfeatures = n;
> + }
> +
> + for (i = 0 ; i < n ; i++) {
> + char *name;
[...]
> +
> + if (!(name = (char *) xmlNodeGetContent(nodes[i]))
> + || *name == 0) {
> + VIR_FREE(name);
> + virCPUReportError(conn, VIR_ERR_INTERNAL_ERROR,
> + "%s", _("Invalid CPU feature name"));
> + goto error;
> + }
let's avoid xmlNodeGetContent() and just use the name in an attribute
it's better and simpler at this point, plus better if we want this
construct to evolve in the future.
> + len = strlen(name);
> + for (j = 0 ; j < len ; j++)
> + name[j] = c_tolower(name[j]);
hum ... are we really normalizing features names ? On one hand we
don't define the list, but on the other hand we lower-case them. Sounds
a bit weird, either we control them or not.
Patch looks fine overall, just those could of suggestions especially
about matching the proposed changes in the schemas and avoiding
tolower()
Daniel
--
Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/
daniel at veillard.com | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library http://libvirt.org/
More information about the libvir-list
mailing list