On Mon, Oct 16, 2017 at 06:22:52PM +0200, Igor Mammedov wrote: > it will allow to reuse parse_NumaOptions() for parsing > configuration commands received via QMP interface > > Signed-off-by: Igor Mammedov <imamm...@redhat.com>
Revieed-by: David Gibson <da...@gibson.dropbear.id.au> > --- > include/sysemu/numa.h | 1 + > numa.c | 48 +++++++++++++++++++++++++++++------------------- > 2 files changed, 30 insertions(+), 19 deletions(-) > > diff --git a/include/sysemu/numa.h b/include/sysemu/numa.h > index c19e456..aad4230 100644 > --- a/include/sysemu/numa.h > +++ b/include/sysemu/numa.h > @@ -30,6 +30,7 @@ struct NumaNodeMem { > }; > > extern NodeInfo numa_info[MAX_NODES]; > +int parse_numa(void *opaque, QemuOpts *opts, Error **errp); > void parse_numa_opts(MachineState *ms); > void numa_complete_configuration(MachineState *ms); > void query_numa_node_mem(NumaNodeMem node_mem[]); > diff --git a/numa.c b/numa.c > index 18af4ff..d8e7dc0 100644 > --- a/numa.c > +++ b/numa.c > @@ -254,28 +254,11 @@ static void parse_numa_distance(NumaDistOptions *dist, > Error **errp) > have_numa_distance = true; > } > > -static int parse_numa(void *opaque, QemuOpts *opts, Error **errp) > +static > +void parse_NumaOptions(MachineState *ms, NumaOptions *object, Error **errp) > { > - NumaOptions *object = NULL; > - MachineState *ms = opaque; > Error *err = NULL; > > - { > - Visitor *v = opts_visitor_new(opts); > - visit_type_NumaOptions(v, NULL, &object, &err); > - visit_free(v); > - } > - > - if (err) { > - goto end; > - } > - > - /* Fix up legacy suffix-less format */ > - if ((object->type == NUMA_OPTIONS_TYPE_NODE) && object->u.node.has_mem) { > - const char *mem_str = qemu_opt_get(opts, "mem"); > - qemu_strtosz_MiB(mem_str, NULL, &object->u.node.mem); > - } > - > switch (object->type) { > case NUMA_OPTIONS_TYPE_NODE: > parse_numa_node(ms, &object->u.node, &err); > @@ -310,6 +293,33 @@ static int parse_numa(void *opaque, QemuOpts *opts, > Error **errp) > } > > end: > + if (err) { > + error_propagate(errp, err); > + } > +} > + > +int parse_numa(void *opaque, QemuOpts *opts, Error **errp) > +{ > + NumaOptions *object = NULL; > + MachineState *ms = MACHINE(opaque); > + Error *err = NULL; > + Visitor *v = opts_visitor_new(opts); > + > + visit_type_NumaOptions(v, NULL, &object, &err); > + visit_free(v); > + if (err) { > + goto end; > + } > + > + /* Fix up legacy suffix-less format */ > + if ((object->type == NUMA_OPTIONS_TYPE_NODE) && object->u.node.has_mem) { > + const char *mem_str = qemu_opt_get(opts, "mem"); > + qemu_strtosz_MiB(mem_str, NULL, &object->u.node.mem); > + } > + > + parse_NumaOptions(ms, object, &err); > + > +end: > qapi_free_NumaOptions(object); > if (err) { > error_report_err(err); -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
signature.asc
Description: PGP signature