[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC 07/15] machine: Add MachineClass::default_buses field
From: |
Eduardo Habkost |
Subject: |
[Qemu-devel] [RFC 07/15] machine: Add MachineClass::default_buses field |
Date: |
Mon, 21 Nov 2016 23:12:05 -0200 |
The new field can be populated by class_init functions with the
list of bus types that are created by default when the machine is
initialized. It will be used to build the device type
compatibility list on 'query-machines' output.
As a TYPE_SYSTEM_BUS bus is always created, add it to the default
list on TYPE_MACHINE.
Signed-off-by: Eduardo Habkost <address@hidden>
---
hw/core/machine.c | 18 +++++++++++++++++-
include/hw/boards.h | 5 +++++
2 files changed, 22 insertions(+), 1 deletion(-)
diff --git a/hw/core/machine.c b/hw/core/machine.c
index b0fd91f..8d55c1a 100644
--- a/hw/core/machine.c
+++ b/hw/core/machine.c
@@ -357,6 +357,13 @@ static void machine_init_notify(Notifier *notifier, void
*data)
foreach_dynamic_sysbus_device(error_on_sysbus_device, NULL);
}
+void machine_class_add_default_bus(MachineClass *mc, const char *typename)
+{
+ mc->default_buses =
+ g_list_append(mc->default_buses, g_strdup(typename));
+
+}
+
static void machine_class_init(ObjectClass *oc, void *data)
{
MachineClass *mc = MACHINE_CLASS(oc);
@@ -365,6 +372,8 @@ static void machine_class_init(ObjectClass *oc, void *data)
mc->default_ram_size = 128 * M_BYTE;
mc->rom_file_has_mr = true;
+ machine_class_add_default_bus(mc, TYPE_SYSTEM_BUS);
+
object_class_property_add_str(oc, "accel",
machine_get_accel, machine_set_accel, &error_abort);
object_class_property_set_description(oc, "accel",
@@ -466,13 +475,20 @@ static void machine_class_init(ObjectClass *oc, void
*data)
static void machine_class_base_init(ObjectClass *oc, void *data)
{
+ MachineClass *mc = MACHINE_CLASS(oc);
+
if (!object_class_is_abstract(oc)) {
- MachineClass *mc = MACHINE_CLASS(oc);
const char *cname = object_class_get_name(oc);
assert(g_str_has_suffix(cname, TYPE_MACHINE_SUFFIX));
mc->name = g_strndup(cname,
strlen(cname) - strlen(TYPE_MACHINE_SUFFIX));
}
+
+ /*FIXME: this should be g_list_copy_deep(), but it requires
+ * a more recent GLib version. Should be replaced with something
+ * equivalent.
+ */
+ mc->default_buses = g_list_copy(mc->default_buses);
}
static void machine_initfn(Object *obj)
diff --git a/include/hw/boards.h b/include/hw/boards.h
index a51da9c..78348ff 100644
--- a/include/hw/boards.h
+++ b/include/hw/boards.h
@@ -42,6 +42,8 @@ bool machine_dump_guest_core(MachineState *machine);
bool machine_mem_merge(MachineState *machine);
void machine_register_compat_props(MachineState *machine);
+void machine_class_add_default_bus(MachineClass *mc, const char *typename);
+
/**
* CPUArchId:
* @arch_id - architecture-dependent CPU ID of present or possible CPU
@@ -92,6 +94,8 @@ typedef struct {
* size than the target architecture's minimum. (Attempting to create
* such a CPU will fail.) Note that changing this is a migration
* compatibility break for the machine.
+ * @default_buses:
+ * List of typenames of buses that are created by default by the machine.
*/
struct MachineClass {
/*< private >*/
@@ -131,6 +135,7 @@ struct MachineClass {
bool option_rom_has_mr;
bool rom_file_has_mr;
int minimum_page_bits;
+ GList *default_buses;
HotplugHandler *(*get_hotplug_handler)(MachineState *machine,
DeviceState *dev);
--
2.7.4
- [Qemu-devel] [RFC 00/15] qmp: Report supported device types on 'query-machines', Eduardo Habkost, 2016/11/21
- [Qemu-devel] [RFC 01/15] qemu.py: Make logging optional, Eduardo Habkost, 2016/11/21
- [Qemu-devel] [RFC 02/15] qtest.py: Support QTEST_LOG environment variable, Eduardo Habkost, 2016/11/21
- [Qemu-devel] [RFC 03/15] qtest.py: make logging optional, Eduardo Habkost, 2016/11/21
- [Qemu-devel] [RFC 04/15] qtest.py: Make 'binary' parameter optional, Eduardo Habkost, 2016/11/21
- [Qemu-devel] [RFC 05/15] tests: Add rules to non-gtester qtest test cases, Eduardo Habkost, 2016/11/21
- [Qemu-devel] [RFC 06/15] qdev: Add device_type field to BusClass, Eduardo Habkost, 2016/11/21
- [Qemu-devel] [RFC 07/15] machine: Add MachineClass::default_buses field,
Eduardo Habkost <=
- [Qemu-devel] [RFC 08/15] qmp: Add 'supported-device-types' field to 'query-machines', Eduardo Habkost, 2016/11/21
- [Qemu-devel] [RFC 10/15] pc: Initialize default bus lists, Eduardo Habkost, 2016/11/21
- [Qemu-devel] [RFC 09/15] pci: Introduce INTERFACE_PCIE_DEVICE interface name, Eduardo Habkost, 2016/11/21
- [Qemu-devel] [RFC 11/15] s390x: Initialize default bus lists, Eduardo Habkost, 2016/11/21
- [Qemu-devel] [RFC 13/15] mips: Initialize default bus lists, Eduardo Habkost, 2016/11/21
- [Qemu-devel] [RFC 14/15] ppc: Initialize default bus lists, Eduardo Habkost, 2016/11/21
- [Qemu-devel] [RFC 12/15] arm: Initialize default bus lists, Eduardo Habkost, 2016/11/21
- [Qemu-devel] [RFC 15/15] qdev: Add device_class_set_bus_type() function, Eduardo Habkost, 2016/11/21
- Re: [Qemu-devel] [RFC 00/15] qmp: Report supported device types on 'query-machines', no-reply, 2016/11/21