qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

ccw-device.h (1464B)


      1 /*
      2  * Common device infrastructure for devices in the virtual css
      3  *
      4  * Copyright 2016 IBM Corp.
      5  * Author(s): Jing Liu <liujbjl@linux.vnet.ibm.com>
      6  *
      7  * This work is licensed under the terms of the GNU GPL, version 2 or (at
      8  * your option) any later version. See the COPYING file in the top-level
      9  * directory.
     10  */
     11 
     12 #ifndef HW_S390X_CCW_DEVICE_H
     13 #define HW_S390X_CCW_DEVICE_H
     14 #include "qom/object.h"
     15 #include "hw/qdev-core.h"
     16 #include "hw/s390x/css.h"
     17 #include "hw/s390x/css-bridge.h"
     18 
     19 struct CcwDevice {
     20     DeviceState parent_obj;
     21     SubchDev *sch;
     22     /* <cssid>.<ssid>.<device number> */
     23     /* The user-set busid of the virtual ccw device. */
     24     CssDevId devno;
     25     /* The actual busid of the virtual ccw device. */
     26     CssDevId dev_id;
     27     /* The actual busid of the virtual subchannel. */
     28     CssDevId subch_id;
     29 };
     30 typedef struct CcwDevice CcwDevice;
     31 
     32 extern const VMStateDescription vmstate_ccw_dev;
     33 #define VMSTATE_CCW_DEVICE(_field, _state)                     \
     34     VMSTATE_STRUCT(_field, _state, 1, vmstate_ccw_dev, CcwDevice)
     35 
     36 struct CCWDeviceClass {
     37     DeviceClass parent_class;
     38     void (*unplug)(HotplugHandler *, DeviceState *, Error **);
     39     void (*realize)(CcwDevice *, Error **);
     40     void (*refill_ids)(CcwDevice *);
     41 };
     42 
     43 static inline CcwDevice *to_ccw_dev_fast(DeviceState *d)
     44 {
     45     return container_of(d, CcwDevice, parent_obj);
     46 }
     47 
     48 #define TYPE_CCW_DEVICE "ccw-device"
     49 
     50 OBJECT_DECLARE_TYPE(CcwDevice, CCWDeviceClass, CCW_DEVICE)
     51 
     52 #endif