[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 4/7] machine: machine_find_class() function
From: |
Eduardo Habkost |
Subject: |
[PATCH 4/7] machine: machine_find_class() function |
Date: |
Thu, 24 Oct 2019 23:25:50 -0300 |
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 <address@hidden>
---
include/hw/boards.h | 1 +
hw/core/machine.c | 16 ++++++++++++++++
vl.c | 17 +----------------
3 files changed, 18 insertions(+), 16 deletions(-)
diff --git a/include/hw/boards.h b/include/hw/boards.h
index de45087f34..0ab7138c63 100644
--- a/include/hw/boards.h
+++ b/include/hw/boards.h
@@ -76,6 +76,7 @@ void machine_set_cpu_numa_node(MachineState *machine,
Error **errp);
void machine_class_allow_dynamic_sysbus_dev(MachineClass *mc, const char
*type);
+MachineClass *machine_find_class(const char *name);
/**
diff --git a/hw/core/machine.c b/hw/core/machine.c
index 1689ad3bf8..53dae1cd08 100644
--- a/hw/core/machine.c
+++ b/hw/core/machine.c
@@ -1143,6 +1143,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,
diff --git a/vl.c b/vl.c
index 4489cfb2bb..8901455ee7 100644
--- a/vl.c
+++ b/vl.c
@@ -1306,21 +1306,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;
@@ -2485,7 +2470,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");
--
2.21.0
- [PATCH 0/7] i386: Add `machine` parameter to query-cpu-definitions, Eduardo Habkost, 2019/10/24
- [PATCH 1/7] i386: Use g_autofree at x86_cpu_list_entry(), Eduardo Habkost, 2019/10/24
- [PATCH 2/7] i386: Add default_version parameter to CPU version functions, Eduardo Habkost, 2019/10/24
- [PATCH 3/7] i386: Don't use default_cpu_version at "-cpu help", Eduardo Habkost, 2019/10/24
- [PATCH 4/7] machine: machine_find_class() function,
Eduardo Habkost <=
- [PATCH 5/7] i386: Remove x86_cpu_set_default_version() function, Eduardo Habkost, 2019/10/24
- [PATCH 6/7] i386: Don't use default_cpu_version() inside query-cpu-definitions, Eduardo Habkost, 2019/10/24
- [PATCH 7/7] cpu: Add `machine` parameter to query-cpu-definitions, Eduardo Habkost, 2019/10/24
- Re: [PATCH 0/7] i386: Add `machine` parameter to query-cpu-definitions, David Hildenbrand, 2019/10/25