mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 16:23:55 -06:00
qapi: Use QAPI_LIST_PREPEND() where possible
Anywhere we create a list of just one item or by prepending items (typically because order doesn't matter), we can use QAPI_LIST_PREPEND(). 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@redhat.com> Message-Id: <20201113011340.463563-5-eblake@redhat.com> Reviewed-by: Markus Armbruster <armbru@redhat.com> Acked-by: Stefan Hajnoczi <stefanha@redhat.com> [Straightforward conflicts due to commita8aa94b5f8
"qga: update schema for guest-get-disks 'dependents' field" and commita10b453a52
"target/mips: Move mips_cpu_add_definition() from helper.c to cpu.c" resolved. Commit message tweaked.] Signed-off-by: Markus Armbruster <armbru@redhat.com>
This commit is contained in:
parent
eaedde5255
commit
54aa3de72e
32 changed files with 158 additions and 421 deletions
|
@ -46,14 +46,12 @@ ObjectPropertyInfoList *qmp_qom_list(const char *path, Error **errp)
|
|||
|
||||
object_property_iter_init(&iter, obj);
|
||||
while ((prop = object_property_iter_next(&iter))) {
|
||||
ObjectPropertyInfoList *entry = g_malloc0(sizeof(*entry));
|
||||
ObjectPropertyInfo *value = g_malloc0(sizeof(ObjectPropertyInfo));
|
||||
|
||||
entry->value = g_malloc0(sizeof(ObjectPropertyInfo));
|
||||
entry->next = props;
|
||||
props = entry;
|
||||
QAPI_LIST_PREPEND(props, value);
|
||||
|
||||
entry->value->name = g_strdup(prop->name);
|
||||
entry->value->type = g_strdup(prop->type);
|
||||
value->name = g_strdup(prop->name);
|
||||
value->type = g_strdup(prop->type);
|
||||
}
|
||||
|
||||
return props;
|
||||
|
@ -90,7 +88,7 @@ QObject *qmp_qom_get(const char *path, const char *property, Error **errp)
|
|||
|
||||
static void qom_list_types_tramp(ObjectClass *klass, void *data)
|
||||
{
|
||||
ObjectTypeInfoList *e, **pret = data;
|
||||
ObjectTypeInfoList **pret = data;
|
||||
ObjectTypeInfo *info;
|
||||
ObjectClass *parent = object_class_get_parent(klass);
|
||||
|
||||
|
@ -102,10 +100,7 @@ static void qom_list_types_tramp(ObjectClass *klass, void *data)
|
|||
info->parent = g_strdup(object_class_get_name(parent));
|
||||
}
|
||||
|
||||
e = g_malloc0(sizeof(*e));
|
||||
e->value = info;
|
||||
e->next = *pret;
|
||||
*pret = e;
|
||||
QAPI_LIST_PREPEND(*pret, info);
|
||||
}
|
||||
|
||||
ObjectTypeInfoList *qmp_qom_list_types(bool has_implements,
|
||||
|
@ -150,7 +145,6 @@ ObjectPropertyInfoList *qmp_device_list_properties(const char *typename,
|
|||
object_property_iter_init(&iter, obj);
|
||||
while ((prop = object_property_iter_next(&iter))) {
|
||||
ObjectPropertyInfo *info;
|
||||
ObjectPropertyInfoList *entry;
|
||||
|
||||
/* Skip Object and DeviceState properties */
|
||||
if (strcmp(prop->name, "type") == 0 ||
|
||||
|
@ -176,10 +170,7 @@ ObjectPropertyInfoList *qmp_device_list_properties(const char *typename,
|
|||
info->default_value = qobject_ref(prop->defval);
|
||||
info->has_default_value = !!info->default_value;
|
||||
|
||||
entry = g_malloc0(sizeof(*entry));
|
||||
entry->value = info;
|
||||
entry->next = prop_list;
|
||||
prop_list = entry;
|
||||
QAPI_LIST_PREPEND(prop_list, info);
|
||||
}
|
||||
|
||||
object_unref(obj);
|
||||
|
@ -217,7 +208,6 @@ ObjectPropertyInfoList *qmp_qom_list_properties(const char *typename,
|
|||
}
|
||||
while ((prop = object_property_iter_next(&iter))) {
|
||||
ObjectPropertyInfo *info;
|
||||
ObjectPropertyInfoList *entry;
|
||||
|
||||
info = g_malloc0(sizeof(*info));
|
||||
info->name = g_strdup(prop->name);
|
||||
|
@ -225,10 +215,7 @@ ObjectPropertyInfoList *qmp_qom_list_properties(const char *typename,
|
|||
info->has_description = !!prop->description;
|
||||
info->description = g_strdup(prop->description);
|
||||
|
||||
entry = g_malloc0(sizeof(*entry));
|
||||
entry->value = info;
|
||||
entry->next = prop_list;
|
||||
prop_list = entry;
|
||||
QAPI_LIST_PREPEND(prop_list, info);
|
||||
}
|
||||
|
||||
object_unref(obj);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue