These changes are the raw update to qemu-2.6.
[kvmfornfv.git] / qemu / hw / core / hotplug.c
1 /*
2  * Hotplug handler interface.
3  *
4  * Copyright (c) 2014 Red Hat Inc.
5  *
6  * Authors:
7  *  Igor Mammedov <imammedo@redhat.com>,
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 #include "qemu/osdep.h"
13 #include "hw/hotplug.h"
14 #include "qemu/module.h"
15
16 void hotplug_handler_plug(HotplugHandler *plug_handler,
17                           DeviceState *plugged_dev,
18                           Error **errp)
19 {
20     HotplugHandlerClass *hdc = HOTPLUG_HANDLER_GET_CLASS(plug_handler);
21
22     if (hdc->plug) {
23         hdc->plug(plug_handler, plugged_dev, errp);
24     }
25 }
26
27 void hotplug_handler_unplug_request(HotplugHandler *plug_handler,
28                                     DeviceState *plugged_dev,
29                                     Error **errp)
30 {
31     HotplugHandlerClass *hdc = HOTPLUG_HANDLER_GET_CLASS(plug_handler);
32
33     if (hdc->unplug_request) {
34         hdc->unplug_request(plug_handler, plugged_dev, errp);
35     }
36 }
37
38 void hotplug_handler_unplug(HotplugHandler *plug_handler,
39                             DeviceState *plugged_dev,
40                             Error **errp)
41 {
42     HotplugHandlerClass *hdc = HOTPLUG_HANDLER_GET_CLASS(plug_handler);
43
44     if (hdc->unplug) {
45         hdc->unplug(plug_handler, plugged_dev, errp);
46     }
47 }
48
49 static const TypeInfo hotplug_handler_info = {
50     .name          = TYPE_HOTPLUG_HANDLER,
51     .parent        = TYPE_INTERFACE,
52     .class_size = sizeof(HotplugHandlerClass),
53 };
54
55 static void hotplug_handler_register_types(void)
56 {
57     type_register_static(&hotplug_handler_info);
58 }
59
60 type_init(hotplug_handler_register_types)