]> git.proxmox.com Git - mirror_qemu.git/blame - include/hw/boards.h
vl: Use MachineClass instead of global QEMUMachine list
[mirror_qemu.git] / include / hw / boards.h
CommitLineData
87ecb68b
PB
1/* Declarations for use by board files for creating devices. */
2
3#ifndef HW_BOARDS_H
4#define HW_BOARDS_H
5
9c17d615 6#include "sysemu/blockdev.h"
9c06a1f7 7#include "sysemu/qemumachine.h"
83c9f4ca 8#include "hw/qdev.h"
36d20cb2 9#include "qom/object.h"
b6b61144 10
5f072e1f 11typedef struct QEMUMachineInitArgs {
e689f7c6 12 const QEMUMachine *machine;
5f072e1f 13 ram_addr_t ram_size;
c1654732 14 const char *boot_order;
5f072e1f
EH
15 const char *kernel_filename;
16 const char *kernel_cmdline;
17 const char *initrd_filename;
18 const char *cpu_model;
19} QEMUMachineInitArgs;
20
21typedef void QEMUMachineInitFunc(QEMUMachineInitArgs *args);
87ecb68b 22
be522029
DG
23typedef void QEMUMachineResetFunc(void);
24
b4fc7b43
IM
25typedef void QEMUMachineHotAddCPUFunc(const int64_t id, Error **errp);
26
135a129a
AK
27typedef int QEMUMachineGetKvmtypeFunc(const char *arg);
28
e689f7c6 29struct QEMUMachine {
87ecb68b 30 const char *name;
3f6599e6 31 const char *alias;
87ecb68b
PB
32 const char *desc;
33 QEMUMachineInitFunc *init;
be522029 34 QEMUMachineResetFunc *reset;
b4fc7b43 35 QEMUMachineHotAddCPUFunc *hot_add_cpu;
135a129a 36 QEMUMachineGetKvmtypeFunc *kvm_type;
2d0d2837 37 BlockInterfaceType block_default_type;
b2097003 38 int max_cpus;
2fe0ee97 39 unsigned int no_serial:1,
986c5f78
GH
40 no_parallel:1,
41 use_virtcon:1,
3ef669e1 42 use_sclp:1,
ac33f8fa
GH
43 no_floppy:1,
44 no_cdrom:1,
45 no_sdcard:1;
0c257437 46 int is_default;
67b724e6 47 const char *default_machine_opts;
c1654732 48 const char *default_boot_order;
458fb679 49 GlobalProperty *compat_props;
87ecb68b 50 struct QEMUMachine *next;
93bfef4c 51 const char *hw_version;
e689f7c6 52};
87ecb68b 53
261747f1 54#define TYPE_MACHINE_SUFFIX "-machine"
87ecb68b 55int qemu_register_machine(QEMUMachine *m);
2c8cffa5 56QEMUMachine *find_default_machine(void);
87ecb68b 57
6f338c34
AL
58extern QEMUMachine *current_machine;
59
36d20cb2
MA
60#define TYPE_MACHINE "machine"
61#define MACHINE(obj) \
62 OBJECT_CHECK(MachineState, (obj), TYPE_MACHINE)
63#define MACHINE_GET_CLASS(obj) \
64 OBJECT_GET_CLASS(MachineClass, (obj), TYPE_MACHINE)
65#define MACHINE_CLASS(klass) \
66 OBJECT_CLASS_CHECK(MachineClass, (klass), TYPE_MACHINE)
67
68typedef struct MachineState MachineState;
69typedef struct MachineClass MachineClass;
70
71/**
72 * MachineClass:
73 * @qemu_machine: #QEMUMachine
74 */
75struct MachineClass {
76 /*< private >*/
77 ObjectClass parent_class;
78 /*< public >*/
79
80 QEMUMachine *qemu_machine;
81};
82
83/**
84 * MachineState:
85 */
86struct MachineState {
87 /*< private >*/
88 Object parent_obj;
89 /*< public >*/
90
91 char *accel;
92 bool kernel_irqchip;
93 int kvm_shadow_mem;
94 char *kernel;
95 char *initrd;
96 char *append;
97 char *dtb;
98 char *dumpdtb;
99 int phandle_start;
100 char *dt_compatible;
101 bool dump_guest_core;
102 bool mem_merge;
103 bool usb;
104 char *firmware;
105
106 QEMUMachineInitArgs init_args;
107};
108
87ecb68b 109#endif