From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55927) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XXRqb-0001oP-Cv for qemu-devel@nongnu.org; Fri, 26 Sep 2014 05:30:00 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XXRqV-0007fP-8e for qemu-devel@nongnu.org; Fri, 26 Sep 2014 05:29:53 -0400 Received: from mx1.redhat.com ([209.132.183.28]:4349) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XXRqU-0007eY-Vt for qemu-devel@nongnu.org; Fri, 26 Sep 2014 05:29:47 -0400 From: Igor Mammedov Date: Fri, 26 Sep 2014 09:28:22 +0000 Message-Id: <1411723721-20484-18-git-send-email-imammedo@redhat.com> In-Reply-To: <1411723721-20484-1-git-send-email-imammedo@redhat.com> References: <1411723721-20484-1-git-send-email-imammedo@redhat.com> Subject: [Qemu-devel] [PATCH v2 17/36] qdev: add wrapper to set BUS as HotplugHandler List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: cornelia.huck@de.ibm.com, mst@redhat.com, amit.shah@redhat.com, agraf@suse.de, borntraeger@de.ibm.com, kraxel@redhat.com, dmitry@daynix.com, pbonzini@redhat.com, rth@twiddle.net to be used for conversion of SCSI and USB devices, and would allow to make every HBA/USB host switch to HotplugHandler API without touching each controller explicitly. Signed-off-by: Igor Mammedov --- hw/core/qdev.c | 19 +++++++++++++++++++ include/hw/qdev-core.h | 11 ++++------- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/hw/core/qdev.c b/hw/core/qdev.c index 1d1b113..0de99b2 100644 --- a/hw/core/qdev.c +++ b/hw/core/qdev.c @@ -112,6 +112,25 @@ void qdev_set_parent_bus(DeviceState *dev, BusState *bus) bus_add_child(bus, dev); } +static void qbus_set_hotplug_handler_internal(BusState *bus, Object *handler, + Error **errp) +{ + + object_property_set_link(OBJECT(bus), OBJECT(handler), + QDEV_HOTPLUG_HANDLER_PROPERTY, errp); + bus->allow_hotplug = 1; +} + +void qbus_set_hotplug_handler(BusState *bus, DeviceState *handler, Error **errp) +{ + qbus_set_hotplug_handler_internal(bus, OBJECT(handler), errp); +} + +void qbus_set_bus_hotplug_handler(BusState *bus, Error **errp) +{ + qbus_set_hotplug_handler_internal(bus, OBJECT(bus), errp); +} + /* Create a new device. This only initializes the device state structure and allows properties to be set. qdev_init should be called to initialize the actual device emulation. */ diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h index ba812c5..48e9579 100644 --- a/include/hw/qdev-core.h +++ b/include/hw/qdev-core.h @@ -363,13 +363,10 @@ extern int qdev_hotplug; char *qdev_get_dev_path(DeviceState *dev); -static inline void qbus_set_hotplug_handler(BusState *bus, DeviceState *handler, - Error **errp) -{ - object_property_set_link(OBJECT(bus), OBJECT(handler), - QDEV_HOTPLUG_HANDLER_PROPERTY, errp); - bus->allow_hotplug = 1; -} +void qbus_set_hotplug_handler(BusState *bus, DeviceState *handler, + Error **errp); + +void qbus_set_bus_hotplug_handler(BusState *bus, Error **errp); static inline bool qbus_is_hotpluggable(BusState *bus) { -- 1.8.3.1