diff options
author | Eric Blake <eblake@redhat.com> | 2020-11-12 19:13:37 -0600 |
---|---|---|
committer | Markus Armbruster <armbru@redhat.com> | 2020-12-19 10:20:14 +0100 |
commit | 54aa3de72ea2aaa2e903e7e879a4f3dda515a00e (patch) | |
tree | 5f1041c336d7a5064f338179022901ab56d8b5d1 /monitor | |
parent | eaedde5255842e8add96bec127567e2a8b3be9a8 (diff) |
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 commit a8aa94b5f8 "qga: update
schema for guest-get-disks 'dependents' field" and commit a10b453a52
"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>
Diffstat (limited to 'monitor')
-rw-r--r-- | monitor/hmp-cmds.c | 13 | ||||
-rw-r--r-- | monitor/misc.c | 25 | ||||
-rw-r--r-- | monitor/qmp-cmds-control.c | 10 |
3 files changed, 21 insertions, 27 deletions
diff --git a/monitor/hmp-cmds.c b/monitor/hmp-cmds.c index 65d8ff4849..73b79df7d8 100644 --- a/monitor/hmp-cmds.c +++ b/monitor/hmp-cmds.c @@ -1255,7 +1255,8 @@ void hmp_migrate_set_capability(Monitor *mon, const QDict *qdict) const char *cap = qdict_get_str(qdict, "capability"); bool state = qdict_get_bool(qdict, "state"); Error *err = NULL; - MigrationCapabilityStatusList *caps = g_malloc0(sizeof(*caps)); + MigrationCapabilityStatusList *caps = NULL; + MigrationCapabilityStatus *value; int val; val = qapi_enum_parse(&MigrationCapability_lookup, cap, -1, &err); @@ -1263,14 +1264,14 @@ void hmp_migrate_set_capability(Monitor *mon, const QDict *qdict) goto end; } - caps->value = g_malloc0(sizeof(*caps->value)); - caps->value->capability = val; - caps->value->state = state; - caps->next = NULL; + value = g_malloc0(sizeof(*value)); + value->capability = val; + value->state = state; + QAPI_LIST_PREPEND(caps, value); qmp_migrate_set_capabilities(caps, &err); + qapi_free_MigrationCapabilityStatusList(caps); end: - qapi_free_MigrationCapabilityStatusList(caps); hmp_handle_error(mon, err); } diff --git a/monitor/misc.c b/monitor/misc.c index fde6e36a0b..f2ee7cd77a 100644 --- a/monitor/misc.c +++ b/monitor/misc.c @@ -1430,33 +1430,26 @@ FdsetInfoList *qmp_query_fdsets(Error **errp) QEMU_LOCK_GUARD(&mon_fdsets_lock); QLIST_FOREACH(mon_fdset, &mon_fdsets, next) { - FdsetInfoList *fdset_info = g_malloc0(sizeof(*fdset_info)); - FdsetFdInfoList *fdsetfd_list = NULL; + FdsetInfo *fdset_info = g_malloc0(sizeof(*fdset_info)); - fdset_info->value = g_malloc0(sizeof(*fdset_info->value)); - fdset_info->value->fdset_id = mon_fdset->id; + fdset_info->fdset_id = mon_fdset->id; QLIST_FOREACH(mon_fdset_fd, &mon_fdset->fds, next) { - FdsetFdInfoList *fdsetfd_info; + FdsetFdInfo *fdsetfd_info; fdsetfd_info = g_malloc0(sizeof(*fdsetfd_info)); - fdsetfd_info->value = g_malloc0(sizeof(*fdsetfd_info->value)); - fdsetfd_info->value->fd = mon_fdset_fd->fd; + fdsetfd_info->fd = mon_fdset_fd->fd; if (mon_fdset_fd->opaque) { - fdsetfd_info->value->has_opaque = true; - fdsetfd_info->value->opaque = g_strdup(mon_fdset_fd->opaque); + fdsetfd_info->has_opaque = true; + fdsetfd_info->opaque = g_strdup(mon_fdset_fd->opaque); } else { - fdsetfd_info->value->has_opaque = false; + fdsetfd_info->has_opaque = false; } - fdsetfd_info->next = fdsetfd_list; - fdsetfd_list = fdsetfd_info; + QAPI_LIST_PREPEND(fdset_info->fds, fdsetfd_info); } - fdset_info->value->fds = fdsetfd_list; - - fdset_info->next = fdset_list; - fdset_list = fdset_info; + QAPI_LIST_PREPEND(fdset_list, fdset_info); } return fdset_list; diff --git a/monitor/qmp-cmds-control.c b/monitor/qmp-cmds-control.c index a456762f6a..17514f4959 100644 --- a/monitor/qmp-cmds-control.c +++ b/monitor/qmp-cmds-control.c @@ -138,18 +138,18 @@ EventInfoList *qmp_query_events(Error **errp) * QAPIEvent_str() and QAPIEvent_lookup[]. When the command goes, * they should go, too. */ - EventInfoList *info, *ev_list = NULL; + EventInfoList *ev_list = NULL; QAPIEvent e; for (e = 0 ; e < QAPI_EVENT__MAX ; e++) { const char *event_name = QAPIEvent_str(e); + EventInfo *info; + assert(event_name != NULL); info = g_malloc0(sizeof(*info)); - info->value = g_malloc0(sizeof(*info->value)); - info->value->name = g_strdup(event_name); + info->name = g_strdup(event_name); - info->next = ev_list; - ev_list = info; + QAPI_LIST_PREPEND(ev_list, info); } return ev_list; |