qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 13/30] qdev: hotplug: set handler only if HOTPLU


From: Tang Chen
Subject: Re: [Qemu-devel] [PATCH 13/30] qdev: hotplug: set handler only if HOTPLUG_HANDLER interface is supported
Date: Thu, 25 Sep 2014 10:06:13 +0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.1.0


On 09/24/2014 07:48 PM, Igor Mammedov wrote:
Check if 'handler' implements HOTPLUG_HANDLER interface
before setting it, if it's not then do nothing and leave
bus not hotpluggable.

That would allow to reuse the same code for creating bus
for example 'scsi_bus_new()' for both hotpluggable and not
hotpluggable controllers.

Signed-off-by: Igor Mammedov <address@hidden>
---
PS:
Keep allow_hotplug = 1 before check to preserve legacy
behaviour for incremental conversion without breaking
bisect-ability. I will be removed later in series.
---
  include/hw/qdev-core.h | 7 ++++++-
  1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h
index ba812c5..653ff4a 100644
--- a/include/hw/qdev-core.h
+++ b/include/hw/qdev-core.h
@@ -366,9 +366,14 @@ char *qdev_get_dev_path(DeviceState *dev);
  static inline void qbus_set_hotplug_handler(BusState *bus, DeviceState 
*handler,
                                              Error **errp)
  {
+    bus->allow_hotplug = 1;

BTW, why not make allow_hotplug a bool ?

Thanks.

+
+    if (!object_dynamic_cast(OBJECT(handler), TYPE_HOTPLUG_HANDLER)) {
+        return;
+    }
+
      object_property_set_link(OBJECT(bus), OBJECT(handler),
                               QDEV_HOTPLUG_HANDLER_PROPERTY, errp);
-    bus->allow_hotplug = 1;
  }
static inline bool qbus_is_hotpluggable(BusState *bus)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]