[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [FOR 0.12 PATCH v4 01/22] qdev: make compat stuff more gene
From: |
Gerd Hoffmann |
Subject: |
[Qemu-devel] [FOR 0.12 PATCH v4 01/22] qdev: make compat stuff more generic |
Date: |
Tue, 8 Dec 2009 13:11:33 +0100 |
This patch renames the compat properties into global properties and
makes them more generic. The compatibility stuff is only one of
multiple possible users now.
Signed-off-by: Gerd Hoffmann <address@hidden>
---
hw/boards.h | 2 +-
hw/pc.c | 2 +-
hw/qdev-properties.c | 22 ++++++++++++++--------
hw/qdev.c | 2 +-
hw/qdev.h | 10 ++++++----
vl.c | 2 +-
6 files changed, 24 insertions(+), 16 deletions(-)
diff --git a/hw/boards.h b/hw/boards.h
index d889341..7a0f20f 100644
--- a/hw/boards.h
+++ b/hw/boards.h
@@ -20,7 +20,7 @@ typedef struct QEMUMachine {
int use_scsi;
int max_cpus;
int is_default;
- CompatProperty *compat_props;
+ GlobalProperty *compat_props;
struct QEMUMachine *next;
} QEMUMachine;
diff --git a/hw/pc.c b/hw/pc.c
index 8c1b7ea..147a9a7 100644
--- a/hw/pc.c
+++ b/hw/pc.c
@@ -1298,7 +1298,7 @@ static QEMUMachine pc_machine_v0_10 = {
.desc = "Standard PC, qemu 0.10",
.init = pc_init_pci,
.max_cpus = 255,
- .compat_props = (CompatProperty[]) {
+ .compat_props = (GlobalProperty[]) {
{
.driver = "virtio-blk-pci",
.property = "class",
diff --git a/hw/qdev-properties.c b/hw/qdev-properties.c
index bda6699..fe106bd 100644
--- a/hw/qdev-properties.c
+++ b/hw/qdev-properties.c
@@ -593,21 +593,27 @@ void qdev_prop_set_defaults(DeviceState *dev, Property
*props)
}
}
-static CompatProperty *compat_props;
+static QTAILQ_HEAD(, GlobalProperty) global_props =
QTAILQ_HEAD_INITIALIZER(global_props);
-void qdev_prop_register_compat(CompatProperty *props)
+void qdev_prop_register_global(GlobalProperty *prop)
{
- compat_props = props;
+ QTAILQ_INSERT_TAIL(&global_props, prop, next);
}
-void qdev_prop_set_compat(DeviceState *dev)
+void qdev_prop_register_global_list(GlobalProperty *props)
{
- CompatProperty *prop;
+ int i;
- if (!compat_props) {
- return;
+ for (i = 0; props[i].driver != NULL; i++) {
+ qdev_prop_register_global(props+i);
}
- for (prop = compat_props; prop->driver != NULL; prop++) {
+}
+
+void qdev_prop_set_globals(DeviceState *dev)
+{
+ GlobalProperty *prop;
+
+ QTAILQ_FOREACH(prop, &global_props, next) {
if (strcmp(dev->info->name, prop->driver) != 0) {
continue;
}
diff --git a/hw/qdev.c b/hw/qdev.c
index 13c9fe2..b6bd4ae 100644
--- a/hw/qdev.c
+++ b/hw/qdev.c
@@ -103,7 +103,7 @@ DeviceState *qdev_create(BusState *bus, const char *name)
dev->parent_bus = bus;
qdev_prop_set_defaults(dev, dev->info->props);
qdev_prop_set_defaults(dev, dev->parent_bus->info->props);
- qdev_prop_set_compat(dev);
+ qdev_prop_set_globals(dev);
QLIST_INSERT_HEAD(&bus->children, dev, sibling);
if (qdev_hotplug) {
assert(bus->allow_hotplug);
diff --git a/hw/qdev.h b/hw/qdev.h
index 8d53754..bbcdba1 100644
--- a/hw/qdev.h
+++ b/hw/qdev.h
@@ -92,11 +92,12 @@ struct PropertyInfo {
int (*print)(DeviceState *dev, Property *prop, char *dest, size_t len);
};
-struct CompatProperty {
+typedef struct GlobalProperty {
const char *driver;
const char *property;
const char *value;
-};
+ QTAILQ_ENTRY(GlobalProperty) next;
+} GlobalProperty;
/*** Board API. This should go away once we have a machine config file. ***/
@@ -256,8 +257,9 @@ void qdev_prop_set_macaddr(DeviceState *dev, const char
*name, uint8_t *value);
void qdev_prop_set_ptr(DeviceState *dev, const char *name, void *value);
void qdev_prop_set_defaults(DeviceState *dev, Property *props);
-void qdev_prop_register_compat(CompatProperty *props);
-void qdev_prop_set_compat(DeviceState *dev);
+void qdev_prop_register_global(GlobalProperty *prop);
+void qdev_prop_register_global_list(GlobalProperty *props);
+void qdev_prop_set_globals(DeviceState *dev);
/* This is a nasty hack to allow passing a NULL bus to qdev_create. */
extern struct BusInfo system_bus_info;
diff --git a/vl.c b/vl.c
index 09a0ec5..a242a11 100644
--- a/vl.c
+++ b/vl.c
@@ -5779,7 +5779,7 @@ int main(int argc, char **argv, char **envp)
}
if (machine->compat_props) {
- qdev_prop_register_compat(machine->compat_props);
+ qdev_prop_register_global_list(machine->compat_props);
}
machine->init(ram_size, boot_devices,
kernel_filename, kernel_cmdline, initrd_filename, cpu_model);
--
1.6.5.2
- [Qemu-devel] [FOR 0.12 PATCH v4 01/22] default devices: qdev integration., Gerd Hoffmann, 2009/12/08
- [Qemu-devel] [FOR 0.12 PATCH v4 03/22] qdev: also match bus name for global properties, Gerd Hoffmann, 2009/12/08
- [Qemu-devel] [FOR 0.12 PATCH v4 04/22] chardev: make chardevs specified in config file work., Gerd Hoffmann, 2009/12/08
- [Qemu-devel] [FOR 0.12 PATCH v4 05/22] Revert "monitor: Command-line flag to enable control mode", Gerd Hoffmann, 2009/12/08
- [Qemu-devel] [FOR 0.12 PATCH v4 07/22] chardev: move greeting into vc backend., Gerd Hoffmann, 2009/12/08
- [Qemu-devel] [FOR 0.12 PATCH v4 01/22] qdev: make compat stuff more generic,
Gerd Hoffmann <=
- [Qemu-devel] [FOR 0.12 PATCH v4 06/22] Revert "Set default console to virtio on S390x", Gerd Hoffmann, 2009/12/08
- [Qemu-devel] [FOR 0.12 PATCH v4 02/22] qdev: add command line option to set global defaults for properties., Gerd Hoffmann, 2009/12/08
- [Qemu-devel] [FOR 0.12 PATCH v4 08/22] vc: colorize chardev title line with blue background., Gerd Hoffmann, 2009/12/08
- [Qemu-devel] [FOR 0.12 PATCH v4 09/22] default devices: core code & serial lines., Gerd Hoffmann, 2009/12/08
- [Qemu-devel] [FOR 0.12 PATCH v4 14/22] default devices: add global cmd line option., Gerd Hoffmann, 2009/12/08
- [Qemu-devel] [FOR 0.12 PATCH v4 10/22] default devices: parallel port., Gerd Hoffmann, 2009/12/08
- [Qemu-devel] [FOR 0.12 PATCH v4 12/22] zap serial_monitor_mux, Gerd Hoffmann, 2009/12/08
- [Qemu-devel] [FOR 0.12 PATCH v4 11/22] default devices: qemu monitor., Gerd Hoffmann, 2009/12/08
- [Qemu-devel] [FOR 0.12 PATCH v4 13/22] default devices: vga adapter., Gerd Hoffmann, 2009/12/08