1*108f7bbaSPaul Durrant /* 2*108f7bbaSPaul Durrant * Copyright (c) 2018 Citrix Systems Inc. 3*108f7bbaSPaul Durrant * 4*108f7bbaSPaul Durrant * This work is licensed under the terms of the GNU GPL, version 2 or later. 5*108f7bbaSPaul Durrant * See the COPYING file in the top-level directory. 6*108f7bbaSPaul Durrant */ 7*108f7bbaSPaul Durrant 8*108f7bbaSPaul Durrant #ifndef HW_XEN_BUS_H 9*108f7bbaSPaul Durrant #define HW_XEN_BUS_H 10*108f7bbaSPaul Durrant 11*108f7bbaSPaul Durrant #include "hw/sysbus.h" 12*108f7bbaSPaul Durrant 13*108f7bbaSPaul Durrant typedef struct XenDevice { 14*108f7bbaSPaul Durrant DeviceState qdev; 15*108f7bbaSPaul Durrant } XenDevice; 16*108f7bbaSPaul Durrant 17*108f7bbaSPaul Durrant typedef void (*XenDeviceRealize)(XenDevice *xendev, Error **errp); 18*108f7bbaSPaul Durrant typedef void (*XenDeviceUnrealize)(XenDevice *xendev, Error **errp); 19*108f7bbaSPaul Durrant 20*108f7bbaSPaul Durrant typedef struct XenDeviceClass { 21*108f7bbaSPaul Durrant /*< private >*/ 22*108f7bbaSPaul Durrant DeviceClass parent_class; 23*108f7bbaSPaul Durrant /*< public >*/ 24*108f7bbaSPaul Durrant XenDeviceRealize realize; 25*108f7bbaSPaul Durrant XenDeviceUnrealize unrealize; 26*108f7bbaSPaul Durrant } XenDeviceClass; 27*108f7bbaSPaul Durrant 28*108f7bbaSPaul Durrant #define TYPE_XEN_DEVICE "xen-device" 29*108f7bbaSPaul Durrant #define XEN_DEVICE(obj) \ 30*108f7bbaSPaul Durrant OBJECT_CHECK(XenDevice, (obj), TYPE_XEN_DEVICE) 31*108f7bbaSPaul Durrant #define XEN_DEVICE_CLASS(class) \ 32*108f7bbaSPaul Durrant OBJECT_CLASS_CHECK(XenDeviceClass, (class), TYPE_XEN_DEVICE) 33*108f7bbaSPaul Durrant #define XEN_DEVICE_GET_CLASS(obj) \ 34*108f7bbaSPaul Durrant OBJECT_GET_CLASS(XenDeviceClass, (obj), TYPE_XEN_DEVICE) 35*108f7bbaSPaul Durrant 36*108f7bbaSPaul Durrant typedef struct XenBus { 37*108f7bbaSPaul Durrant BusState qbus; 38*108f7bbaSPaul Durrant } XenBus; 39*108f7bbaSPaul Durrant 40*108f7bbaSPaul Durrant typedef struct XenBusClass { 41*108f7bbaSPaul Durrant /*< private >*/ 42*108f7bbaSPaul Durrant BusClass parent_class; 43*108f7bbaSPaul Durrant } XenBusClass; 44*108f7bbaSPaul Durrant 45*108f7bbaSPaul Durrant #define TYPE_XEN_BUS "xen-bus" 46*108f7bbaSPaul Durrant #define XEN_BUS(obj) \ 47*108f7bbaSPaul Durrant OBJECT_CHECK(XenBus, (obj), TYPE_XEN_BUS) 48*108f7bbaSPaul Durrant #define XEN_BUS_CLASS(class) \ 49*108f7bbaSPaul Durrant OBJECT_CLASS_CHECK(XenBusClass, (class), TYPE_XEN_BUS) 50*108f7bbaSPaul Durrant #define XEN_BUS_GET_CLASS(obj) \ 51*108f7bbaSPaul Durrant OBJECT_GET_CLASS(XenBusClass, (obj), TYPE_XEN_BUS) 52*108f7bbaSPaul Durrant 53*108f7bbaSPaul Durrant void xen_bus_init(void); 54*108f7bbaSPaul Durrant 55*108f7bbaSPaul Durrant #endif /* HW_XEN_BUS_H */ 56