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