@@ -43,6 +43,8 @@ void machine_class_allow_dynamic_sysbus_dev(MachineClass *mc, const char *type);
MemoryRegion *machine_consume_memdev(MachineState *machine,
HostMemoryBackend *backend);
+MachineClass *machine_find_class(const char *name);
+
/**
* CPUArchId:
* @arch_id - architecture-dependent CPU ID of present or possible CPU
@@ -1136,6 +1136,22 @@ void machine_run_board_init(MachineState *machine)
machine_class->init(machine);
}
+MachineClass *machine_find_class(const char *name)
+{
+ g_autoptr(GSList) machines = object_class_get_list(TYPE_MACHINE, false);
+ GSList *el;
+
+ for (el = machines; el; el = el->next) {
+ MachineClass *mc = el->data;
+
+ if (!strcmp(mc->name, name) || !g_strcmp0(mc->alias, name)) {
+ return mc;
+ }
+ }
+
+ return NULL;
+}
+
static const TypeInfo machine_info = {
.name = TYPE_MACHINE,
.parent = TYPE_OBJECT,
@@ -1159,21 +1159,6 @@ static int usb_parse(const char *cmdline)
MachineState *current_machine;
-static MachineClass *find_machine(const char *name, GSList *machines)
-{
- GSList *el;
-
- for (el = machines; el; el = el->next) {
- MachineClass *mc = el->data;
-
- if (!strcmp(mc->name, name) || !g_strcmp0(mc->alias, name)) {
- return mc;
- }
- }
-
- return NULL;
-}
-
static MachineClass *find_default_machine(GSList *machines)
{
GSList *el;
@@ -2341,7 +2326,7 @@ static MachineClass *machine_parse(const char *name, GSList *machines)
exit(0);
}
- mc = find_machine(name, machines);
+ mc = machine_find_class(name);
if (!mc) {
error_report("unsupported machine type");
error_printf("Use -machine help to list supported machines\n");
Move find_machine() from vl.c to core/machine.c and rename it to machine_find_class(), so it can be reused by other code. The function won't reuse the results of the previous object_class_get_list() call like it did in vl.c, but this shouldn't be a problem because the function is expected to be called only once during regular QEMU usage. Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> --- include/hw/boards.h | 2 ++ hw/core/machine.c | 16 ++++++++++++++++ softmmu/vl.c | 17 +---------------- 3 files changed, 19 insertions(+), 16 deletions(-)