xref: /qemu/hw/core/hotplug.c (revision 9f117d41841e13ca29cc2a10ac03258339ea1f8b)
1*9f117d41SIgor Mammedov /*
2*9f117d41SIgor Mammedov  * Hotplug handler interface.
3*9f117d41SIgor Mammedov  *
4*9f117d41SIgor Mammedov  * Copyright (c) 2014 Red Hat Inc.
5*9f117d41SIgor Mammedov  *
6*9f117d41SIgor Mammedov  * Authors:
7*9f117d41SIgor Mammedov  *  Igor Mammedov <imammedo@redhat.com>,
8*9f117d41SIgor Mammedov  *
9*9f117d41SIgor Mammedov  * This work is licensed under the terms of the GNU GPL, version 2 or later.
10*9f117d41SIgor Mammedov  * See the COPYING file in the top-level directory.
11*9f117d41SIgor Mammedov  */
12*9f117d41SIgor Mammedov #include "hw/hotplug.h"
13*9f117d41SIgor Mammedov #include "qemu/module.h"
14*9f117d41SIgor Mammedov 
15*9f117d41SIgor Mammedov void hotplug_handler_plug(HotplugHandler *plug_handler,
16*9f117d41SIgor Mammedov                           DeviceState *plugged_dev,
17*9f117d41SIgor Mammedov                           Error **errp)
18*9f117d41SIgor Mammedov {
19*9f117d41SIgor Mammedov     HotplugHandlerClass *hdc = HOTPLUG_HANDLER_GET_CLASS(plug_handler);
20*9f117d41SIgor Mammedov 
21*9f117d41SIgor Mammedov     if (hdc->plug) {
22*9f117d41SIgor Mammedov         hdc->plug(plug_handler, plugged_dev, errp);
23*9f117d41SIgor Mammedov     }
24*9f117d41SIgor Mammedov }
25*9f117d41SIgor Mammedov 
26*9f117d41SIgor Mammedov void hotplug_handler_unplug(HotplugHandler *plug_handler,
27*9f117d41SIgor Mammedov                             DeviceState *plugged_dev,
28*9f117d41SIgor Mammedov                             Error **errp)
29*9f117d41SIgor Mammedov {
30*9f117d41SIgor Mammedov     HotplugHandlerClass *hdc = HOTPLUG_HANDLER_GET_CLASS(plug_handler);
31*9f117d41SIgor Mammedov 
32*9f117d41SIgor Mammedov     if (hdc->unplug) {
33*9f117d41SIgor Mammedov         hdc->unplug(plug_handler, plugged_dev, errp);
34*9f117d41SIgor Mammedov     }
35*9f117d41SIgor Mammedov }
36*9f117d41SIgor Mammedov 
37*9f117d41SIgor Mammedov static const TypeInfo hotplug_handler_info = {
38*9f117d41SIgor Mammedov     .name          = TYPE_HOTPLUG_HANDLER,
39*9f117d41SIgor Mammedov     .parent        = TYPE_INTERFACE,
40*9f117d41SIgor Mammedov     .class_size = sizeof(HotplugHandlerClass),
41*9f117d41SIgor Mammedov };
42*9f117d41SIgor Mammedov 
43*9f117d41SIgor Mammedov static void hotplug_handler_register_types(void)
44*9f117d41SIgor Mammedov {
45*9f117d41SIgor Mammedov     type_register_static(&hotplug_handler_info);
46*9f117d41SIgor Mammedov }
47*9f117d41SIgor Mammedov 
48*9f117d41SIgor Mammedov type_init(hotplug_handler_register_types)
49