]>
Commit | Line | Data |
---|---|---|
9f117d41 IM |
1 | /* |
2 | * Hotplug handler interface. | |
3 | * | |
4 | * Copyright (c) 2014 Red Hat Inc. | |
5 | * | |
6 | * Authors: | |
7 | * Igor Mammedov <[email protected]>, | |
8 | * | |
9 | * This work is licensed under the terms of the GNU GPL, version 2 or later. | |
10 | * See the COPYING file in the top-level directory. | |
11 | */ | |
12 | #ifndef HOTPLUG_H | |
13 | #define HOTPLUG_H | |
14 | ||
15 | #include "qom/object.h" | |
16 | #include "qemu/typedefs.h" | |
17 | ||
18 | #define TYPE_HOTPLUG_HANDLER "hotplug-handler" | |
19 | ||
20 | #define HOTPLUG_HANDLER_CLASS(klass) \ | |
21 | OBJECT_CLASS_CHECK(HotplugHandlerClass, (klass), TYPE_HOTPLUG_HANDLER) | |
22 | #define HOTPLUG_HANDLER_GET_CLASS(obj) \ | |
23 | OBJECT_GET_CLASS(HotplugHandlerClass, (obj), TYPE_HOTPLUG_HANDLER) | |
24 | #define HOTPLUG_HANDLER(obj) \ | |
25 | INTERFACE_CHECK(HotplugHandler, (obj), TYPE_HOTPLUG_HANDLER) | |
26 | ||
27 | ||
28 | typedef struct HotplugHandler { | |
29 | /* <private> */ | |
30 | Object Parent; | |
31 | } HotplugHandler; | |
32 | ||
33 | /** | |
34 | * hotplug_fn: | |
35 | * @plug_handler: a device performing plug/uplug action | |
36 | * @plugged_dev: a device that has been (un)plugged | |
37 | * @errp: returns an error if this function fails | |
38 | */ | |
39 | typedef void (*hotplug_fn)(HotplugHandler *plug_handler, | |
40 | DeviceState *plugged_dev, Error **errp); | |
41 | ||
42 | /** | |
43 | * HotplugDeviceClass: | |
44 | * | |
45 | * Interface to be implemented by a device performing | |
46 | * hardware (un)plug functions. | |
47 | * | |
48 | * @parent: Opaque parent interface. | |
49 | * @plug: plug callback. | |
50 | * @unplug: unplug callback. | |
51 | */ | |
52 | typedef struct HotplugHandlerClass { | |
53 | /* <private> */ | |
54 | InterfaceClass parent; | |
55 | ||
56 | /* <public> */ | |
57 | hotplug_fn plug; | |
58 | hotplug_fn unplug; | |
59 | } HotplugHandlerClass; | |
60 | ||
61 | /** | |
62 | * hotplug_handler_plug: | |
63 | * | |
64 | * Call #HotplugHandlerClass.plug callback of @plug_handler. | |
65 | */ | |
66 | void hotplug_handler_plug(HotplugHandler *plug_handler, | |
67 | DeviceState *plugged_dev, | |
68 | Error **errp); | |
69 | ||
70 | /** | |
71 | * hotplug_handler_unplug: | |
72 | * | |
73 | * Call #HotplugHandlerClass.unplug callback of @plug_handler. | |
74 | */ | |
75 | void hotplug_handler_unplug(HotplugHandler *plug_handler, | |
76 | DeviceState *plugged_dev, | |
77 | Error **errp); | |
78 | #endif |