qapi machine: Elide redundant has_FOO in generated C
The has_FOO for pointer-valued FOO are redundant, except for arrays. They are also a nuisance to work with. Recent commit "qapi: Start to elide redundant has_FOO in generated C" provided the means to elide them step by step. This is the step for qapi/machine*.json. Said commit explains the transformation in more detail. The invariant violations mentioned there do not occur here. Cc: Eduardo Habkost <eduardo@habkost.net> Cc: Marcel Apfelbaum <marcel.apfelbaum@gmail.com> Cc: Philippe Mathieu-Daudé <f4bug@amsat.org> Cc: Yanan Wang <wangyanan55@huawei.com> Signed-off-by: Markus Armbruster <armbru@redhat.com> Message-Id: <20221104160712.3005652-16-armbru@redhat.com>
This commit is contained in:
parent
107111bf6f
commit
fe8ac1fa49
|
@ -62,7 +62,7 @@ void hmp_hotpluggable_cpus(Monitor *mon, const QDict *qdict)
|
||||||
monitor_printf(mon, " type: \"%s\"\n", l->value->type);
|
monitor_printf(mon, " type: \"%s\"\n", l->value->type);
|
||||||
monitor_printf(mon, " vcpus_count: \"%" PRIu64 "\"\n",
|
monitor_printf(mon, " vcpus_count: \"%" PRIu64 "\"\n",
|
||||||
l->value->vcpus_count);
|
l->value->vcpus_count);
|
||||||
if (l->value->has_qom_path) {
|
if (l->value->qom_path) {
|
||||||
monitor_printf(mon, " qom_path: \"%s\"\n", l->value->qom_path);
|
monitor_printf(mon, " qom_path: \"%s\"\n", l->value->qom_path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -55,8 +55,7 @@ CpuInfoFastList *qmp_query_cpus_fast(Error **errp)
|
||||||
value->qom_path = object_get_canonical_path(OBJECT(cpu));
|
value->qom_path = object_get_canonical_path(OBJECT(cpu));
|
||||||
value->thread_id = cpu->thread_id;
|
value->thread_id = cpu->thread_id;
|
||||||
|
|
||||||
value->has_props = !!mc->cpu_index_to_instance_props;
|
if (mc->cpu_index_to_instance_props) {
|
||||||
if (value->has_props) {
|
|
||||||
CpuInstanceProperties *props;
|
CpuInstanceProperties *props;
|
||||||
props = g_malloc0(sizeof(*props));
|
props = g_malloc0(sizeof(*props));
|
||||||
*props = mc->cpu_index_to_instance_props(ms, cpu->cpu_index);
|
*props = mc->cpu_index_to_instance_props(ms, cpu->cpu_index);
|
||||||
|
@ -90,7 +89,6 @@ MachineInfoList *qmp_query_machines(Error **errp)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mc->alias) {
|
if (mc->alias) {
|
||||||
info->has_alias = true;
|
|
||||||
info->alias = g_strdup(mc->alias);
|
info->alias = g_strdup(mc->alias);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -101,11 +99,9 @@ MachineInfoList *qmp_query_machines(Error **errp)
|
||||||
info->deprecated = !!mc->deprecation_reason;
|
info->deprecated = !!mc->deprecation_reason;
|
||||||
if (mc->default_cpu_type) {
|
if (mc->default_cpu_type) {
|
||||||
info->default_cpu_type = g_strdup(mc->default_cpu_type);
|
info->default_cpu_type = g_strdup(mc->default_cpu_type);
|
||||||
info->has_default_cpu_type = true;
|
|
||||||
}
|
}
|
||||||
if (mc->default_ram_id) {
|
if (mc->default_ram_id) {
|
||||||
info->default_ram_id = g_strdup(mc->default_ram_id);
|
info->default_ram_id = g_strdup(mc->default_ram_id);
|
||||||
info->has_default_ram_id = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QAPI_LIST_PREPEND(mach_list, info);
|
QAPI_LIST_PREPEND(mach_list, info);
|
||||||
|
@ -168,7 +164,6 @@ static int query_memdev(Object *obj, void *opaque)
|
||||||
m = g_malloc0(sizeof(*m));
|
m = g_malloc0(sizeof(*m));
|
||||||
|
|
||||||
m->id = g_strdup(object_get_canonical_path_component(obj));
|
m->id = g_strdup(object_get_canonical_path_component(obj));
|
||||||
m->has_id = !!m->id;
|
|
||||||
|
|
||||||
m->size = object_property_get_uint(obj, "size", &error_abort);
|
m->size = object_property_get_uint(obj, "size", &error_abort);
|
||||||
m->merge = object_property_get_bool(obj, "merge", &error_abort);
|
m->merge = object_property_get_bool(obj, "merge", &error_abort);
|
||||||
|
@ -227,7 +222,7 @@ HumanReadableText *qmp_x_query_numa(Error **errp)
|
||||||
for (i = 0; i < nb_numa_nodes; i++) {
|
for (i = 0; i < nb_numa_nodes; i++) {
|
||||||
g_string_append_printf(buf, "node %d cpus:", i);
|
g_string_append_printf(buf, "node %d cpus:", i);
|
||||||
for (cpu = cpu_list; cpu; cpu = cpu->next) {
|
for (cpu = cpu_list; cpu; cpu = cpu->next) {
|
||||||
if (cpu->value->has_props && cpu->value->props->has_node_id &&
|
if (cpu->value->props && cpu->value->props->has_node_id &&
|
||||||
cpu->value->props->node_id == i) {
|
cpu->value->props->node_id == i) {
|
||||||
g_string_append_printf(buf, " %" PRIi64, cpu->value->cpu_index);
|
g_string_append_printf(buf, " %" PRIi64, cpu->value->cpu_index);
|
||||||
}
|
}
|
||||||
|
|
|
@ -684,7 +684,6 @@ HotpluggableCPUList *machine_query_hotpluggable_cpus(MachineState *machine)
|
||||||
|
|
||||||
cpu = machine->possible_cpus->cpus[i].cpu;
|
cpu = machine->possible_cpus->cpus[i].cpu;
|
||||||
if (cpu) {
|
if (cpu) {
|
||||||
cpu_item->has_qom_path = true;
|
|
||||||
cpu_item->qom_path = object_get_canonical_path(cpu);
|
cpu_item->qom_path = object_get_canonical_path(cpu);
|
||||||
}
|
}
|
||||||
QAPI_LIST_PREPEND(head, cpu_item);
|
QAPI_LIST_PREPEND(head, cpu_item);
|
||||||
|
@ -873,8 +872,7 @@ static void machine_copy_boot_config(MachineState *ms, BootConfiguration *config
|
||||||
|
|
||||||
machine_free_boot_config(ms);
|
machine_free_boot_config(ms);
|
||||||
ms->boot_config = *config;
|
ms->boot_config = *config;
|
||||||
if (!config->has_order) {
|
if (!config->order) {
|
||||||
ms->boot_config.has_order = true;
|
|
||||||
ms->boot_config.order = g_strdup(machine_class->default_boot_order);
|
ms->boot_config.order = g_strdup(machine_class->default_boot_order);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -889,13 +887,13 @@ static void machine_set_boot(Object *obj, Visitor *v, const char *name,
|
||||||
if (!visit_type_BootConfiguration(v, name, &config, errp)) {
|
if (!visit_type_BootConfiguration(v, name, &config, errp)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (config->has_order) {
|
if (config->order) {
|
||||||
validate_bootdevices(config->order, errp);
|
validate_bootdevices(config->order, errp);
|
||||||
if (*errp) {
|
if (*errp) {
|
||||||
goto out_free;
|
goto out_free;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (config->has_once) {
|
if (config->once) {
|
||||||
validate_bootdevices(config->once, errp);
|
validate_bootdevices(config->once, errp);
|
||||||
if (*errp) {
|
if (*errp) {
|
||||||
goto out_free;
|
goto out_free;
|
||||||
|
@ -1424,7 +1422,7 @@ void qdev_machine_creation_done(void)
|
||||||
{
|
{
|
||||||
cpu_synchronize_all_post_init();
|
cpu_synchronize_all_post_init();
|
||||||
|
|
||||||
if (current_machine->boot_config.has_once) {
|
if (current_machine->boot_config.once) {
|
||||||
qemu_boot_set(current_machine->boot_config.once, &error_fatal);
|
qemu_boot_set(current_machine->boot_config.once, &error_fatal);
|
||||||
qemu_register_reset(restore_boot_order, g_strdup(current_machine->boot_config.order));
|
qemu_register_reset(restore_boot_order, g_strdup(current_machine->boot_config.order));
|
||||||
}
|
}
|
||||||
|
|
|
@ -130,9 +130,9 @@ static void parse_numa_node(MachineState *ms, NumaNodeOptions *node,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
have_memdevs = have_memdevs ? : node->has_memdev;
|
have_memdevs = have_memdevs || node->memdev;
|
||||||
have_mem = have_mem ? : node->has_mem;
|
have_mem = have_mem || node->has_mem;
|
||||||
if ((node->has_mem && have_memdevs) || (node->has_memdev && have_mem)) {
|
if ((node->has_mem && have_memdevs) || (node->memdev && have_mem)) {
|
||||||
error_setg(errp, "numa configuration should use either mem= or memdev=,"
|
error_setg(errp, "numa configuration should use either mem= or memdev=,"
|
||||||
"mixing both is not allowed");
|
"mixing both is not allowed");
|
||||||
return;
|
return;
|
||||||
|
@ -152,7 +152,7 @@ static void parse_numa_node(MachineState *ms, NumaNodeOptions *node,
|
||||||
" use -numa node,memdev instead");
|
" use -numa node,memdev instead");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (node->has_memdev) {
|
if (node->memdev) {
|
||||||
Object *o;
|
Object *o;
|
||||||
o = object_resolve_path_type(node->memdev, TYPE_MEMORY_BACKEND, NULL);
|
o = object_resolve_path_type(node->memdev, TYPE_MEMORY_BACKEND, NULL);
|
||||||
if (!o) {
|
if (!o) {
|
||||||
|
|
|
@ -252,7 +252,6 @@ static void pc_dimm_md_fill_device_info(const MemoryDeviceState *md,
|
||||||
const DeviceState *dev = DEVICE(md);
|
const DeviceState *dev = DEVICE(md);
|
||||||
|
|
||||||
if (dev->id) {
|
if (dev->id) {
|
||||||
di->has_id = true;
|
|
||||||
di->id = g_strdup(dev->id);
|
di->id = g_strdup(dev->id);
|
||||||
}
|
}
|
||||||
di->hotplugged = dev->hotplugged;
|
di->hotplugged = dev->hotplugged;
|
||||||
|
|
|
@ -201,7 +201,7 @@ static void fw_cfg_bootsplash(FWCfgState *s)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* insert splash file if user configurated */
|
/* insert splash file if user configurated */
|
||||||
if (current_machine->boot_config.has_splash) {
|
if (current_machine->boot_config.splash) {
|
||||||
const char *boot_splash_filename = current_machine->boot_config.splash;
|
const char *boot_splash_filename = current_machine->boot_config.splash;
|
||||||
filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, boot_splash_filename);
|
filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, boot_splash_filename);
|
||||||
if (filename == NULL) {
|
if (filename == NULL) {
|
||||||
|
|
|
@ -65,7 +65,6 @@ static void virtio_mem_pci_fill_device_info(const MemoryDeviceState *md,
|
||||||
DeviceState *dev = DEVICE(md);
|
DeviceState *dev = DEVICE(md);
|
||||||
|
|
||||||
if (dev->id) {
|
if (dev->id) {
|
||||||
vi->has_id = true;
|
|
||||||
vi->id = g_strdup(dev->id);
|
vi->id = g_strdup(dev->id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -90,8 +89,7 @@ static void virtio_mem_pci_size_change_notify(Notifier *notifier, void *data)
|
||||||
char *qom_path = object_get_canonical_path(OBJECT(dev));
|
char *qom_path = object_get_canonical_path(OBJECT(dev));
|
||||||
const uint64_t * const size_p = data;
|
const uint64_t * const size_p = data;
|
||||||
|
|
||||||
qapi_event_send_memory_device_size_change(!!dev->id, dev->id, *size_p,
|
qapi_event_send_memory_device_size_change(dev->id, *size_p, qom_path);
|
||||||
qom_path);
|
|
||||||
g_free(qom_path);
|
g_free(qom_path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -70,7 +70,6 @@ static void virtio_pmem_pci_fill_device_info(const MemoryDeviceState *md,
|
||||||
DeviceState *dev = DEVICE(md);
|
DeviceState *dev = DEVICE(md);
|
||||||
|
|
||||||
if (dev->id) {
|
if (dev->id) {
|
||||||
vi->has_id = true;
|
|
||||||
vi->id = g_strdup(dev->id);
|
vi->id = g_strdup(dev->id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -759,8 +759,6 @@ class QAPISchemaObjectTypeMember(QAPISchemaMember):
|
||||||
assert self.type
|
assert self.type
|
||||||
# Temporary hack to support dropping the has_FOO in reviewable chunks
|
# Temporary hack to support dropping the has_FOO in reviewable chunks
|
||||||
opt_out = [
|
opt_out = [
|
||||||
'qapi/machine.json',
|
|
||||||
'qapi/machine-target.json',
|
|
||||||
'qapi/migration.json',
|
'qapi/migration.json',
|
||||||
'qapi/misc.json',
|
'qapi/misc.json',
|
||||||
'qapi/net.json',
|
'qapi/net.json',
|
||||||
|
|
|
@ -221,7 +221,6 @@ CpuModelExpansionInfo *qmp_query_cpu_model_expansion(CpuModelExpansionType type,
|
||||||
qobject_unref(qdict_out);
|
qobject_unref(qdict_out);
|
||||||
} else {
|
} else {
|
||||||
expansion_info->model->props = QOBJECT(qdict_out);
|
expansion_info->model->props = QOBJECT(qdict_out);
|
||||||
expansion_info->model->has_props = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
object_unref(obj);
|
object_unref(obj);
|
||||||
|
|
|
@ -187,10 +187,8 @@ qmp_query_cpu_model_expansion(CpuModelExpansionType type,
|
||||||
QDict *props = NULL;
|
QDict *props = NULL;
|
||||||
const char *base_name;
|
const char *base_name;
|
||||||
|
|
||||||
xc = x86_cpu_from_model(model->name,
|
xc = x86_cpu_from_model(model->name, qobject_to(QDict, model->props),
|
||||||
model->has_props ?
|
&err);
|
||||||
qobject_to(QDict, model->props) :
|
|
||||||
NULL, &err);
|
|
||||||
if (err) {
|
if (err) {
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
@ -198,7 +196,6 @@ qmp_query_cpu_model_expansion(CpuModelExpansionType type,
|
||||||
props = qdict_new();
|
props = qdict_new();
|
||||||
ret->model = g_new0(CpuModelInfo, 1);
|
ret->model = g_new0(CpuModelInfo, 1);
|
||||||
ret->model->props = QOBJECT(props);
|
ret->model->props = QOBJECT(props);
|
||||||
ret->model->has_props = true;
|
|
||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case CPU_MODEL_EXPANSION_TYPE_STATIC:
|
case CPU_MODEL_EXPANSION_TYPE_STATIC:
|
||||||
|
|
|
@ -4901,7 +4901,6 @@ static void x86_cpu_definition_entry(gpointer data, gpointer user_data)
|
||||||
*/
|
*/
|
||||||
if (default_cpu_version != CPU_VERSION_LEGACY) {
|
if (default_cpu_version != CPU_VERSION_LEGACY) {
|
||||||
info->alias_of = x86_cpu_class_get_alias_of(cc);
|
info->alias_of = x86_cpu_class_get_alias_of(cc);
|
||||||
info->has_alias_of = !!info->alias_of;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QAPI_LIST_PREPEND(*cpu_list, info);
|
QAPI_LIST_PREPEND(*cpu_list, info);
|
||||||
|
|
|
@ -210,7 +210,6 @@ static void cpu_info_from_model(CpuModelInfo *info, const S390CPUModel *model,
|
||||||
qobject_unref(qdict);
|
qobject_unref(qdict);
|
||||||
} else {
|
} else {
|
||||||
info->props = QOBJECT(qdict);
|
info->props = QOBJECT(qdict);
|
||||||
info->has_props = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue