xref: /qemu/include/hw/xen/xen-bus.h (revision 108f7bba15d6ee4136b543fc22005921e7ce4048)
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