aboutsummaryrefslogtreecommitdiff
path: root/include/hw/hotplug.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/hw/hotplug.h')
-rw-r--r--include/hw/hotplug.h16
1 files changed, 15 insertions, 1 deletions
diff --git a/include/hw/hotplug.h b/include/hw/hotplug.h
index a6533cb0b1..050d2f0530 100644
--- a/include/hw/hotplug.h
+++ b/include/hw/hotplug.h
@@ -47,7 +47,12 @@ typedef void (*hotplug_fn)(HotplugHandler *plug_handler,
*
* @parent: Opaque parent interface.
* @plug: plug callback.
+ * @unplug_request: unplug request callback.
+ * Used as a means to initiate device unplug for devices that
+ * require asynchronous unplug handling.
* @unplug: unplug callback.
+ * Used for device removal with devices that implement
+ * asynchronous and synchronous (suprise) removal.
*/
typedef struct HotplugHandlerClass {
/* <private> */
@@ -55,6 +60,7 @@ typedef struct HotplugHandlerClass {
/* <public> */
hotplug_fn plug;
+ hotplug_fn unplug_request;
hotplug_fn unplug;
} HotplugHandlerClass;
@@ -68,9 +74,17 @@ void hotplug_handler_plug(HotplugHandler *plug_handler,
Error **errp);
/**
+ * hotplug_handler_unplug_request:
+ *
+ * Calls #HotplugHandlerClass.unplug_request callback of @plug_handler.
+ */
+void hotplug_handler_unplug_request(HotplugHandler *plug_handler,
+ DeviceState *plugged_dev,
+ Error **errp);
+/**
* hotplug_handler_unplug:
*
- * Call #HotplugHandlerClass.unplug callback of @plug_handler.
+ * Calls #HotplugHandlerClass.unplug callback of @plug_handler.
*/
void hotplug_handler_unplug(HotplugHandler *plug_handler,
DeviceState *plugged_dev,