Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 199 lines (155 sloc) 5.537 kb
68396ea Robert Mustacchi Initial commit of d32e8d0b8d9e0ef7cf7ab2e74548982972789dfc from qemu-kvm
rmustacc authored
1 #ifndef SYSEMU_H
2 #define SYSEMU_H
3 /* Misc. things related to the system emulator. */
4
5 #include "qemu-common.h"
6 #include "qemu-option.h"
7 #include "qemu-queue.h"
8 #include "qemu-timer.h"
9 #include "notify.h"
10
11 #ifdef _WIN32
12 #include <windows.h>
13 #include "qemu-os-win32.h"
14 #endif
15
16 #ifdef CONFIG_POSIX
17 #include "qemu-os-posix.h"
18 #endif
19
20 /* vl.c */
21 extern const char *bios_name;
22
23 #define QEMU_FILE_TYPE_BIOS 0
24 #define QEMU_FILE_TYPE_KEYMAP 1
25 char *qemu_find_file(int type, const char *name);
26
27 extern int vm_running;
67c6e40 Robert Mustacchi HVM-758 Add a qmp entry for hw setup complete
rmustacc authored
28 extern int vm_setup;
68396ea Robert Mustacchi Initial commit of d32e8d0b8d9e0ef7cf7ab2e74548982972789dfc from qemu-kvm
rmustacc authored
29 extern const char *qemu_name;
30 extern uint8_t qemu_uuid[];
31 int qemu_uuid_parse(const char *str, uint8_t *uuid);
32 #define UUID_FMT "%02hhx%02hhx%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx"
33
34 typedef struct vm_change_state_entry VMChangeStateEntry;
35 typedef void VMChangeStateHandler(void *opaque, int running, int reason);
36
37 VMChangeStateEntry *qemu_add_vm_change_state_handler(VMChangeStateHandler *cb,
38 void *opaque);
39 void qemu_del_vm_change_state_handler(VMChangeStateEntry *e);
40
41 void vm_start(void);
42 void vm_stop(int reason);
43
44 uint64_t ram_bytes_remaining(void);
45 uint64_t ram_bytes_transferred(void);
46 uint64_t ram_bytes_total(void);
47
48 int64_t cpu_get_ticks(void);
49 void cpu_enable_ticks(void);
50 void cpu_disable_ticks(void);
51
52 void qemu_system_reset_request(void);
53 void qemu_system_shutdown_request(void);
54 void qemu_system_powerdown_request(void);
55 int qemu_no_shutdown(void);
56 int qemu_shutdown_requested(void);
57 int qemu_reset_requested(void);
58 int qemu_powerdown_requested(void);
59 extern qemu_irq qemu_system_powerdown;
60 void qemu_system_reset(void);
61
62 void qemu_add_exit_notifier(Notifier *notify);
63 void qemu_remove_exit_notifier(Notifier *notify);
64
65 void qemu_add_machine_init_done_notifier(Notifier *notify);
66
67 void do_savevm(Monitor *mon, const QDict *qdict);
68 int load_vmstate(const char *name);
69 void do_delvm(Monitor *mon, const QDict *qdict);
70 void do_info_snapshots(Monitor *mon);
71
72 void cpu_synchronize_all_states(void);
73 void cpu_synchronize_all_post_reset(void);
74 void cpu_synchronize_all_post_init(void);
75
76 void qemu_announce_self(void);
77
78 void main_loop_wait(int nonblocking);
79
80 bool qemu_savevm_state_blocked(Monitor *mon);
81 int qemu_savevm_state_begin(Monitor *mon, QEMUFile *f, int blk_enable,
82 int shared);
83 int qemu_savevm_state_iterate(Monitor *mon, QEMUFile *f);
84 int qemu_savevm_state_complete(Monitor *mon, QEMUFile *f);
85 void qemu_savevm_state_cancel(Monitor *mon, QEMUFile *f);
86 int qemu_loadvm_state(QEMUFile *f);
87
88 /* SLIRP */
89 void do_info_slirp(Monitor *mon);
90
91 /* OS specific functions */
92 void os_setup_early_signal_handling(void);
93 char *os_find_datadir(const char *argv0);
94 void os_parse_cmd_args(int index, const char *optarg);
95 void os_pidfile_error(void);
96
97 typedef enum DisplayType
98 {
99 DT_DEFAULT,
100 DT_CURSES,
101 DT_SDL,
102 DT_NOGRAPHIC,
103 } DisplayType;
104
105 extern int autostart;
106 extern int incoming_expected;
107 extern int bios_size;
108
109 typedef enum {
110 VGA_NONE, VGA_STD, VGA_CIRRUS, VGA_VMWARE, VGA_XENFB, VGA_QXL,
111 } VGAInterfaceType;
112
113 extern int vga_interface_type;
114 #define cirrus_vga_enabled (vga_interface_type == VGA_CIRRUS)
115 #define std_vga_enabled (vga_interface_type == VGA_STD)
116 #define xenfb_enabled (vga_interface_type == VGA_XENFB)
117 #define vmsvga_enabled (vga_interface_type == VGA_VMWARE)
118 #define qxl_enabled (vga_interface_type == VGA_QXL)
119
120 extern int graphic_width;
121 extern int graphic_height;
122 extern int graphic_depth;
123 extern uint8_t irq0override;
124 extern DisplayType display_type;
125 extern const char *keyboard_layout;
126 extern int win2k_install_hack;
127 extern int rtc_td_hack;
128 extern int alt_grab;
129 extern int ctrl_grab;
130 extern int usb_enabled;
131 extern int smp_cpus;
132 extern int max_cpus;
133 extern int cursor_hide;
134 extern int graphic_rotate;
135 extern int no_quit;
136 extern int no_shutdown;
137 extern int semihosting_enabled;
138 extern int old_param;
139 extern int boot_menu;
140 extern QEMUClock *rtc_clock;
141 extern long hpagesize;
142
143 #define MAX_NODES 64
144 extern int nb_numa_nodes;
145 extern uint64_t node_mem[MAX_NODES];
146 extern uint64_t node_cpumask[MAX_NODES];
147
148 #define MAX_OPTION_ROMS 16
149 typedef struct QEMUOptionRom {
150 const char *name;
151 int32_t bootindex;
152 } QEMUOptionRom;
153 extern QEMUOptionRom option_rom[MAX_OPTION_ROMS];
154 extern int nb_option_roms;
155
156 #define MAX_PROM_ENVS 128
157 extern const char *prom_envs[MAX_PROM_ENVS];
158 extern unsigned int nb_prom_envs;
159
160 /* acpi */
161 void qemu_system_cpu_hot_add(int cpu, int state);
162
163 /* pci-hotplug */
164 void pci_device_hot_add(Monitor *mon, const QDict *qdict);
165 void drive_hot_add(Monitor *mon, const QDict *qdict);
166 void do_pci_device_hot_remove(Monitor *mon, const QDict *qdict);
167
168 /* pcie aer error injection */
169 void pcie_aer_inject_error_print(Monitor *mon, const QObject *data);
170 int do_pcie_aer_inejct_error(Monitor *mon,
171 const QDict *qdict, QObject **ret_data);
172
173 /* serial ports */
174
175 #define MAX_SERIAL_PORTS 4
176
177 extern CharDriverState *serial_hds[MAX_SERIAL_PORTS];
178
179 /* parallel ports */
180
181 #define MAX_PARALLEL_PORTS 3
182
183 extern CharDriverState *parallel_hds[MAX_PARALLEL_PORTS];
184
185 #define TFR(expr) do { if ((expr) != -1) break; } while (errno == EINTR)
186
187 void do_usb_add(Monitor *mon, const QDict *qdict);
188 void do_usb_del(Monitor *mon, const QDict *qdict);
189 void usb_info(Monitor *mon);
190
191 void rtc_change_mon_event(struct tm *tm);
192
193 void register_devices(void);
194
195 void add_boot_device_path(int32_t bootindex, DeviceState *dev,
196 const char *suffix);
197 char *get_boot_devices_list(uint32_t *size);
198 #endif
Something went wrong with that request. Please try again.