[GEDI] [PATCH v3 4/7] qapi: Use QAPI_LIST_PREPEND() where possible
Markus Armbruster
armbru at redhat.com
Wed Jan 13 13:00:24 UTC 2021
Eric Blake <eblake at redhat.com> writes:
> Anywhere we create a list of just one item or by prepending items
> (typically because order doesn't matter), we can use the
> QAPI_LIST_PREPEND macro. But places where we must keep the list in
> order by appending remain open-coded until later patches.
>
> Note that as a side effect, this also performs a cleanup of two minor
> issues in qga/commands-posix.c: the old code was performing
> new = g_malloc0(sizeof(*ret));
> which 1) is confusing because you have to verify whether 'new' and
> 'ret' are variables with the same type, and 2) would conflict with C++
> compilation (not an actual problem for this file, but makes
> copy-and-paste harder).
>
> Signed-off-by: Eric Blake <eblake at redhat.com>
> Reviewed-by: Markus Armbruster <armbru at redhat.com>
> Acked-by: Stefan Hajnoczi <stefanha at redhat.com>
Already in master as commit 54aa3de72e, except for:
> diff --git a/hw/core/machine-qmp-cmds.c b/hw/core/machine-qmp-cmds.c
> index 87f14140a381..156223a344ed 100644
> --- a/hw/core/machine-qmp-cmds.c
> +++ b/hw/core/machine-qmp-cmds.c
[...]
> @@ -297,41 +293,31 @@ void qmp_set_numa_node(NumaOptions *cmd, Error **errp)
> static int query_memdev(Object *obj, void *opaque)
> {
> MemdevList **list = opaque;
> - MemdevList *m = NULL;
> + Memdev *m;
> QObject *host_nodes;
> Visitor *v;
>
> if (object_dynamic_cast(obj, TYPE_MEMORY_BACKEND)) {
> m = g_malloc0(sizeof(*m));
>
> - m->value = g_malloc0(sizeof(*m->value));
> + m->id = g_strdup(object_get_canonical_path_component(obj));
> + m->has_id = !!m->id;
>
> - m->value->id = g_strdup(object_get_canonical_path_component(obj));
> - m->value->has_id = !!m->value->id;
> -
> - m->value->size = object_property_get_uint(obj, "size",
> - &error_abort);
> - m->value->merge = object_property_get_bool(obj, "merge",
> - &error_abort);
> - m->value->dump = object_property_get_bool(obj, "dump",
> - &error_abort);
> - m->value->prealloc = object_property_get_bool(obj,
> - "prealloc",
> - &error_abort);
> - m->value->policy = object_property_get_enum(obj,
> - "policy",
> - "HostMemPolicy",
> - &error_abort);
> + m->size = object_property_get_uint(obj, "size", &error_abort);
> + m->merge = object_property_get_bool(obj, "merge", &error_abort);
> + m->dump = object_property_get_bool(obj, "dump", &error_abort);
> + m->prealloc = object_property_get_bool(obj, "prealloc", &error_abort);
> + m->policy = object_property_get_enum(obj, "policy", "HostMemPolicy",
> + &error_abort);
> host_nodes = object_property_get_qobject(obj,
> "host-nodes",
> &error_abort);
> v = qobject_input_visitor_new(host_nodes);
> - visit_type_uint16List(v, NULL, &m->value->host_nodes, &error_abort);
> + visit_type_uint16List(v, NULL, &m->host_nodes, &error_abort);
> visit_free(v);
> qobject_unref(host_nodes);
>
> - m->next = *list;
> - *list = m;
> + QAPI_LIST_PREPEND(*list, m);
> }
>
> return 0;
[...]
More information about the integration
mailing list