1
2
3
4
5
6
7
8
9
10
# ifndef SYSEMU_H
# define SYSEMU_H
/* Misc. things related to the system emulator. */
/* vl.c */
extern const char * bios_name ;
extern const char * bios_dir ;
extern int vm_running ;
extern const char * qemu_name ;
11
12
extern uint8_t qemu_uuid [];
# define UUID_FMT "%02hhx%02hhx%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx"
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
typedef struct vm_change_state_entry VMChangeStateEntry ;
typedef void VMChangeStateHandler ( void * opaque , int running );
typedef void VMStopHandler ( void * opaque , int reason );
VMChangeStateEntry * qemu_add_vm_change_state_handler ( VMChangeStateHandler * cb ,
void * opaque );
void qemu_del_vm_change_state_handler ( VMChangeStateEntry * e );
int qemu_add_vm_stop_handler ( VMStopHandler * cb , void * opaque );
void qemu_del_vm_stop_handler ( VMStopHandler * cb , void * opaque );
void vm_start ( void );
void vm_stop ( int reason );
int64_t cpu_get_ticks ( void );
void cpu_enable_ticks ( void );
void cpu_disable_ticks ( void );
void qemu_system_reset_request ( void );
void qemu_system_shutdown_request ( void );
void qemu_system_powerdown_request ( void );
35
36
37
38
int qemu_shutdown_requested ( void );
int qemu_reset_requested ( void );
int qemu_powerdown_requested ( void );
# if ! defined ( TARGET_SPARC ) && ! defined ( TARGET_I386 )
39
40
41
42
43
// Please implement a power failure function to signal the OS
# define qemu_system_powerdown () do {} while ( 0 )
# else
void qemu_system_powerdown ( void );
# endif
44
void qemu_system_reset ( void );
45
46
47
48
49
50
void do_savevm ( const char * name );
void do_loadvm ( const char * name );
void do_delvm ( const char * name );
void do_info_snapshots ( void );
51
52
void qemu_announce_self ( void );
53
54
void main_loop_wait ( int timeout );
55
56
57
58
59
60
int qemu_savevm_state_begin ( QEMUFile * f );
int qemu_savevm_state_iterate ( QEMUFile * f );
int qemu_savevm_state_complete ( QEMUFile * f );
int qemu_savevm_state ( QEMUFile * f );
int qemu_loadvm_state ( QEMUFile * f );
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/* Polling handling */
/* return TRUE if no sleep should be done afterwards */
typedef int PollingFunc ( void * opaque );
int qemu_add_polling_cb ( PollingFunc * func , void * opaque );
void qemu_del_polling_cb ( PollingFunc * func , void * opaque );
# ifdef _WIN32
/* Wait objects handling */
typedef void WaitObjectFunc ( void * opaque );
int qemu_add_wait_object ( HANDLE handle , WaitObjectFunc * func , void * opaque );
void qemu_del_wait_object ( HANDLE handle , WaitObjectFunc * func , void * opaque );
# endif
/* TAP win32 */
int tap_win32_init ( VLANState * vlan , const char * ifname );
/* SLIRP */
void do_info_slirp ( void );
extern int bios_size ;
extern int cirrus_vga_enabled ;
extern int vmsvga_enabled ;
extern int graphic_width ;
extern int graphic_height ;
extern int graphic_depth ;
89
extern int nographic ;
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
extern const char * keyboard_layout ;
extern int win2k_install_hack ;
extern int alt_grab ;
extern int usb_enabled ;
extern int smp_cpus ;
extern int cursor_hide ;
extern int graphic_rotate ;
extern int no_quit ;
extern int semihosting_enabled ;
extern int old_param ;
extern const char * bootp_filename ;
# ifdef USE_KQEMU
extern int kqemu_allowed ;
# endif
# define MAX_OPTION_ROMS 16
extern const char * option_rom [ MAX_OPTION_ROMS ];
extern int nb_option_roms ;
# ifdef TARGET_SPARC
# define MAX_PROM_ENVS 128
extern const char * prom_envs [ MAX_PROM_ENVS ];
extern unsigned int nb_prom_envs ;
# endif
# if defined ( TARGET_PPC )
# define BIOS_SIZE ( 1024 * 1024 )
# elif defined ( TARGET_SPARC64 )
# define BIOS_SIZE (( 512 + 32 ) * 1024 )
# elif defined ( TARGET_MIPS )
# define BIOS_SIZE ( 4 * 1024 * 1024 )
# endif
ths
authored
17 years ago
125
126
127
128
129
130
typedef enum {
IF_IDE , IF_SCSI , IF_FLOPPY , IF_PFLASH , IF_MTD , IF_SD
} BlockInterfaceType ;
typedef struct DriveInfo {
BlockDriverState * bdrv ;
ths
authored
17 years ago
131
BlockInterfaceType type ;
ths
authored
17 years ago
132
133
134
135
136
137
138
139
int bus ;
int unit ;
} DriveInfo ;
# define MAX_IDE_DEVS 2
# define MAX_SCSI_DEVS 7
# define MAX_DRIVES 32
140
141
extern int nb_drives ;
extern DriveInfo drives_table [ MAX_DRIVES + 1 ];
ths
authored
17 years ago
142
ths
authored
17 years ago
143
144
extern int drive_get_index ( BlockInterfaceType type , int bus , int unit );
extern int drive_get_max_bus ( BlockInterfaceType type );
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
/* serial ports */
# define MAX_SERIAL_PORTS 4
extern CharDriverState * serial_hds [ MAX_SERIAL_PORTS ];
/* parallel ports */
# define MAX_PARALLEL_PORTS 3
extern CharDriverState * parallel_hds [ MAX_PARALLEL_PORTS ];
# ifdef NEED_CPU_H
/* loader.c */
int get_image_size ( const char * filename );
161
162
int load_image ( const char * filename , uint8_t * addr ); /* deprecated */
int load_image_targphys ( const char * filename , target_phys_addr_t , int max_sz );
163
int load_elf ( const char * filename , int64_t address_offset ,
164
uint64_t * pentry , uint64_t * lowaddr , uint64_t * highaddr );
165
int load_aout ( const char * filename , target_phys_addr_t addr , int max_sz );
166
int load_uboot ( const char * filename , target_ulong * ep , int * is_linux );
167
168
169
170
171
172
int fread_targphys ( target_phys_addr_t dst_addr , size_t nbytes , FILE * f );
int fread_targphys_ok ( target_phys_addr_t dst_addr , size_t nbytes , FILE * f );
int read_targphys ( int fd , target_phys_addr_t dst_addr , size_t nbytes );
void pstrcpy_targphys ( target_phys_addr_t dest , int buf_size ,
const char * source );
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
# endif
# ifdef HAS_AUDIO
struct soundhw {
const char * name ;
const char * descr ;
int enabled ;
int isa ;
union {
int ( * init_isa ) ( AudioState * s , qemu_irq * pic );
int ( * init_pci ) ( PCIBus * bus , AudioState * s );
} init ;
};
extern struct soundhw soundhw [];
# endif
void do_usb_add ( const char * devname );
void do_usb_del ( const char * devname );
void usb_info ( void );
# endif