[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 04/11] qdev: add to BusState "hotplug-handler" link
From: |
Igor Mammedov |
Subject: |
[Qemu-devel] [PATCH 04/11] qdev: add to BusState "hotplug-handler" link |
Date: |
Wed, 11 Dec 2013 02:01:19 +0100 |
It will allow to reuse field with different BUSes, reducing code duplication.
Field is intended fot replacing 'hotplug_qdev' field in PCIBus and also
will allow to avoid adding equivalent field to DimmBus with possiblitity
to refactor other BUSes to use it instead of custom field.
In addition once all users of allow_hotplug field are converted to new
API, link could replace allow_hotplug in qdev hotplug code.
Signed-off-by: Igor Mammedov <address@hidden>
---
hw/core/qdev.c | 4 ++++
include/hw/qdev-core.h | 5 +++++
2 files changed, 9 insertions(+), 0 deletions(-)
diff --git a/hw/core/qdev.c b/hw/core/qdev.c
index e374a93..25c2d2c 100644
--- a/hw/core/qdev.c
+++ b/hw/core/qdev.c
@@ -32,6 +32,7 @@
#include "qapi/visitor.h"
#include "qapi/qmp/qjson.h"
#include "monitor/monitor.h"
+#include "hw/hotplug.h"
int qdev_hotplug = 0;
static bool qdev_hot_added = false;
@@ -868,6 +869,9 @@ static void qbus_initfn(Object *obj)
BusState *bus = BUS(obj);
QTAILQ_INIT(&bus->children);
+ object_property_add_link(obj, QDEV_HOTPLUG_HANDLER_PROPERTY,
+ TYPE_HOTPLUG_HANDLER,
+ (Object **)&bus->hotplug_handler, NULL);
}
static char *default_bus_get_fw_dev_path(DeviceState *dev)
diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h
index f2043a6..684a5da 100644
--- a/include/hw/qdev-core.h
+++ b/include/hw/qdev-core.h
@@ -8,6 +8,7 @@
#include "qom/object.h"
#include "hw/irq.h"
#include "qapi/error.h"
+#include "hw/hotplug.h"
enum {
DEV_NVECTORS_UNSPECIFIED = -1,
@@ -169,14 +170,18 @@ typedef struct BusChild {
QTAILQ_ENTRY(BusChild) sibling;
} BusChild;
+#define QDEV_HOTPLUG_HANDLER_PROPERTY "hotplug-handler"
+
/**
* BusState:
+ * @hotplug_device: link to a hotplug device associated with bus.
*/
struct BusState {
Object obj;
DeviceState *parent;
const char *name;
int allow_hotplug;
+ HotplugHandler *hotplug_handler;
int max_index;
QTAILQ_HEAD(ChildrenHead, BusChild) children;
QLIST_ENTRY(BusState) sibling;
--
1.7.1
- [Qemu-devel] [PATCH 00/11 v2] Refactor PCI/SHPC/PCIE hotplug to use a more generic hotplug API, Igor Mammedov, 2013/12/10
- [Qemu-devel] [PATCH 01/11] qom: do not register interface "types" in the type table, Igor Mammedov, 2013/12/10
- [Qemu-devel] [PATCH 02/11] qom: detect bad reentrance during object_class_foreach, Igor Mammedov, 2013/12/10
- [Qemu-devel] [PATCH 03/11] define hotplug interface, Igor Mammedov, 2013/12/10
- [Qemu-devel] [PATCH 04/11] qdev: add to BusState "hotplug-handler" link,
Igor Mammedov <=
- [Qemu-devel] [PATCH 05/11] qdev: add "hotplugable" property to Device, Igor Mammedov, 2013/12/10
- Re: [Qemu-devel] [PATCH 05/11] qdev: add "hotplugable" property to Device, Igor Mammedov, 2013/12/11
- Re: [Qemu-devel] [PATCH 05/11] qdev: add "hotplugable" property to Device, Paolo Bonzini, 2013/12/11
- Re: [Qemu-devel] [PATCH 05/11] qdev: add "hotplugable" property to Device, Igor Mammedov, 2013/12/11
[Qemu-devel] [PATCH 06/11] hw/acpi: move typeinfo to the file end, Igor Mammedov, 2013/12/10
[Qemu-devel] [PATCH 07/11] qdev:pci: refactor PCIDevice to use generic "hotplugable" property, Igor Mammedov, 2013/12/10