1#ifndef QEMU_TYPEDEFS_H
2#define QEMU_TYPEDEFS_H
3
4/*
5 * This header is for selectively avoiding #include just to get a
6 * typedef name.
7 *
8 * Declaring a typedef name in its "obvious" place can result in
9 * inclusion cycles, in particular for complete struct and union
10 * types that need more types for their members. It can also result
11 * in headers pulling in many more headers, slowing down builds.
12 *
13 * You can break such cycles and unwanted dependencies by declaring
14 * the typedef name here.
15 *
16 * For struct types used in only a few headers, judicious use of the
17 * struct tag instead of the typedef name is commonly preferable.
18 */
19
20/*
21 * Incomplete struct types
22 * Please keep this list in case-insensitive alphabetical order.
23 */
24typedef struct AdapterInfo AdapterInfo;
25typedef struct AddressSpace AddressSpace;
26typedef struct AioContext AioContext;
27typedef struct AnnounceTimer AnnounceTimer;
28typedef struct BdrvDirtyBitmap BdrvDirtyBitmap;
29typedef struct BdrvDirtyBitmapIter BdrvDirtyBitmapIter;
30typedef struct BlockBackend BlockBackend;
31typedef struct BlockBackendRootState BlockBackendRootState;
32typedef struct BlockDriverState BlockDriverState;
33typedef struct BusClass BusClass;
34typedef struct BusState BusState;
35typedef struct Chardev Chardev;
36typedef struct CompatProperty CompatProperty;
37typedef struct CoMutex CoMutex;
38typedef struct CPUAddressSpace CPUAddressSpace;
39typedef struct CPUState CPUState;
40typedef struct DeviceListener DeviceListener;
41typedef struct DeviceState DeviceState;
42typedef struct DirtyBitmapSnapshot DirtyBitmapSnapshot;
43typedef struct DisplayChangeListener DisplayChangeListener;
44typedef struct DriveInfo DriveInfo;
45typedef struct Error Error;
46typedef struct EventNotifier EventNotifier;
47typedef struct FlatView FlatView;
48typedef struct FWCfgEntry FWCfgEntry;
49typedef struct FWCfgIoState FWCfgIoState;
50typedef struct FWCfgMemState FWCfgMemState;
51typedef struct FWCfgState FWCfgState;
52typedef struct HostMemoryBackend HostMemoryBackend;
53typedef struct HVFX86EmulatorState HVFX86EmulatorState;
54typedef struct I2CBus I2CBus;
55typedef struct I2SCodec I2SCodec;
56typedef struct IOMMUMemoryRegion IOMMUMemoryRegion;
57typedef struct ISABus ISABus;
58typedef struct ISADevice ISADevice;
59typedef struct IsaDma IsaDma;
60typedef struct MACAddr MACAddr;
61typedef struct MachineClass MachineClass;
62typedef struct MachineState MachineState;
63typedef struct MemoryListener MemoryListener;
64typedef struct MemoryMappingList MemoryMappingList;
65typedef struct MemoryRegion MemoryRegion;
66typedef struct MemoryRegionCache MemoryRegionCache;
67typedef struct MemoryRegionSection MemoryRegionSection;
68typedef struct MigrationIncomingState MigrationIncomingState;
69typedef struct MigrationState MigrationState;
70typedef struct Monitor Monitor;
71typedef struct MonitorDef MonitorDef;
72typedef struct MSIMessage MSIMessage;
73typedef struct NetClientState NetClientState;
74typedef struct NetFilterState NetFilterState;
75typedef struct NICInfo NICInfo;
76typedef struct NodeInfo NodeInfo;
77typedef struct NumaNodeMem NumaNodeMem;
78typedef struct ObjectClass ObjectClass;
79typedef struct PCIBridge PCIBridge;
80typedef struct PCIBus PCIBus;
81typedef struct PCIDevice PCIDevice;
82typedef struct PCIEAERErr PCIEAERErr;
83typedef struct PCIEAERLog PCIEAERLog;
84typedef struct PCIEAERMsg PCIEAERMsg;
85typedef struct PCIEPort PCIEPort;
86typedef struct PCIESlot PCIESlot;
87typedef struct PCIExpressDevice PCIExpressDevice;
88typedef struct PCIExpressHost PCIExpressHost;
89typedef struct PCIHostDeviceAddress PCIHostDeviceAddress;
90typedef struct PCIHostState PCIHostState;
91typedef struct PCMachineState PCMachineState;
92typedef struct PostcopyDiscardState PostcopyDiscardState;
93typedef struct Property Property;
94typedef struct PropertyInfo PropertyInfo;
95typedef struct QBool QBool;
96typedef struct QDict QDict;
97typedef struct QEMUBH QEMUBH;
98typedef struct QemuConsole QemuConsole;
99typedef struct QEMUFile QEMUFile;
100typedef struct QemuLockable QemuLockable;
101typedef struct QemuMutex QemuMutex;
102typedef struct QemuOpt QemuOpt;
103typedef struct QemuOpts QemuOpts;
104typedef struct QemuOptsList QemuOptsList;
105typedef struct QEMUSGList QEMUSGList;
106typedef struct QemuSpin QemuSpin;
107typedef struct QEMUTimer QEMUTimer;
108typedef struct QEMUTimerListGroup QEMUTimerListGroup;
109typedef struct QJSON QJSON;
110typedef struct QList QList;
111typedef struct QNull QNull;
112typedef struct QNum QNum;
113typedef struct QObject QObject;
114typedef struct QString QString;
115typedef struct RAMBlock RAMBlock;
116typedef struct Range Range;
117typedef struct SHPCDevice SHPCDevice;
118typedef struct SSIBus SSIBus;
119typedef struct VirtIODevice VirtIODevice;
120typedef struct Visitor Visitor;
121typedef struct VMChangeStateEntry VMChangeStateEntry;
122typedef struct VMStateDescription VMStateDescription;
123
124/*
125 * Pointer types
126 * Such typedefs should be limited to cases where the typedef's users
127 * are oblivious of its "pointer-ness".
128 * Please keep this list in case-insensitive alphabetical order.
129 */
130typedef struct IRQState *qemu_irq;
131
132/*
133 * Function types
134 */
135typedef void SaveStateHandler(QEMUFile *f, void *opaque);
136typedef int LoadStateHandler(QEMUFile *f, void *opaque, int version_id);
137typedef void (*qemu_irq_handler)(void *opaque, int n, int level);
138
139#endif /* QEMU_TYPEDEFS_H */
140