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) 61