hotplug.c (1960B)
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 16void hotplug_handler_pre_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->pre_plug) { 23 hdc->pre_plug(plug_handler, plugged_dev, errp); 24 } 25} 26 27void hotplug_handler_plug(HotplugHandler *plug_handler, 28 DeviceState *plugged_dev, 29 Error **errp) 30{ 31 HotplugHandlerClass *hdc = HOTPLUG_HANDLER_GET_CLASS(plug_handler); 32 33 if (hdc->plug) { 34 hdc->plug(plug_handler, plugged_dev, errp); 35 } 36} 37 38void hotplug_handler_unplug_request(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_request) { 45 hdc->unplug_request(plug_handler, plugged_dev, errp); 46 } 47} 48 49void hotplug_handler_unplug(HotplugHandler *plug_handler, 50 DeviceState *plugged_dev, 51 Error **errp) 52{ 53 HotplugHandlerClass *hdc = HOTPLUG_HANDLER_GET_CLASS(plug_handler); 54 55 if (hdc->unplug) { 56 hdc->unplug(plug_handler, plugged_dev, errp); 57 } 58} 59 60static const TypeInfo hotplug_handler_info = { 61 .name = TYPE_HOTPLUG_HANDLER, 62 .parent = TYPE_INTERFACE, 63 .class_size = sizeof(HotplugHandlerClass), 64}; 65 66static void hotplug_handler_register_types(void) 67{ 68 type_register_static(&hotplug_handler_info); 69} 70 71type_init(hotplug_handler_register_types)