]> Git Repo - qemu.git/blob - vl.h
char dev ioctls
[qemu.git] / vl.h
1 /*
2  * QEMU System Emulator header
3  * 
4  * Copyright (c) 2003 Fabrice Bellard
5  * 
6  * Permission is hereby granted, free of charge, to any person obtaining a copy
7  * of this software and associated documentation files (the "Software"), to deal
8  * in the Software without restriction, including without limitation the rights
9  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10  * copies of the Software, and to permit persons to whom the Software is
11  * furnished to do so, subject to the following conditions:
12  *
13  * The above copyright notice and this permission notice shall be included in
14  * all copies or substantial portions of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22  * THE SOFTWARE.
23  */
24 #ifndef VL_H
25 #define VL_H
26
27 /* we put basic includes here to avoid repeating them in device drivers */
28 #include <stdlib.h>
29 #include <stdio.h>
30 #include <stdarg.h>
31 #include <string.h>
32 #include <inttypes.h>
33 #include <limits.h>
34 #include <time.h>
35 #include <ctype.h>
36 #include <errno.h>
37 #include <unistd.h>
38 #include <fcntl.h>
39 #include <sys/stat.h>
40 #include "audio/audio.h"
41
42 #ifndef O_LARGEFILE
43 #define O_LARGEFILE 0
44 #endif
45 #ifndef O_BINARY
46 #define O_BINARY 0
47 #endif
48
49 #ifdef _WIN32
50 #define lseek _lseeki64
51 #define ENOTSUP 4096
52 /* XXX: find 64 bit version */
53 #define ftruncate chsize
54
55 static inline char *realpath(const char *path, char *resolved_path)
56 {
57     _fullpath(resolved_path, path, _MAX_PATH);
58     return resolved_path;
59 }
60 #endif
61
62 #ifdef QEMU_TOOL
63
64 /* we use QEMU_TOOL in the command line tools which do not depend on
65    the target CPU type */
66 #include "config-host.h"
67 #include <setjmp.h>
68 #include "osdep.h"
69 #include "bswap.h"
70
71 #else
72
73 #include "cpu.h"
74 #include "gdbstub.h"
75
76 #endif /* !defined(QEMU_TOOL) */
77
78 #ifndef glue
79 #define xglue(x, y) x ## y
80 #define glue(x, y) xglue(x, y)
81 #define stringify(s)    tostring(s)
82 #define tostring(s)     #s
83 #endif
84
85 /* vl.c */
86 uint64_t muldiv64(uint64_t a, uint32_t b, uint32_t c);
87
88 void hw_error(const char *fmt, ...);
89
90 int get_image_size(const char *filename);
91 int load_image(const char *filename, uint8_t *addr);
92 extern const char *bios_dir;
93
94 void pstrcpy(char *buf, int buf_size, const char *str);
95 char *pstrcat(char *buf, int buf_size, const char *s);
96 int strstart(const char *str, const char *val, const char **ptr);
97
98 extern int vm_running;
99
100 typedef void VMStopHandler(void *opaque, int reason);
101
102 int qemu_add_vm_stop_handler(VMStopHandler *cb, void *opaque);
103 void qemu_del_vm_stop_handler(VMStopHandler *cb, void *opaque);
104
105 void vm_start(void);
106 void vm_stop(int reason);
107
108 typedef void QEMUResetHandler(void *opaque);
109
110 void qemu_register_reset(QEMUResetHandler *func, void *opaque);
111 void qemu_system_reset_request(void);
112 void qemu_system_shutdown_request(void);
113 void qemu_system_powerdown_request(void);
114 #if !defined(TARGET_SPARC)
115 // Please implement a power failure function to signal the OS
116 #define qemu_system_powerdown() do{}while(0)
117 #else
118 void qemu_system_powerdown(void);
119 #endif
120
121 void main_loop_wait(int timeout);
122
123 extern int audio_enabled;
124 extern int sb16_enabled;
125 extern int adlib_enabled;
126 extern int gus_enabled;
127 extern int es1370_enabled;
128 extern int ram_size;
129 extern int bios_size;
130 extern int rtc_utc;
131 extern int cirrus_vga_enabled;
132 extern int graphic_width;
133 extern int graphic_height;
134 extern int graphic_depth;
135 extern const char *keyboard_layout;
136 extern int kqemu_allowed;
137 extern int win2k_install_hack;
138 extern int usb_enabled;
139
140 /* XXX: make it dynamic */
141 #if defined (TARGET_PPC)
142 #define BIOS_SIZE ((512 + 32) * 1024)
143 #elif defined(TARGET_MIPS)
144 #define BIOS_SIZE (128 * 1024)
145 #else
146 #define BIOS_SIZE ((256 + 64) * 1024)
147 #endif
148
149 /* keyboard/mouse support */
150
151 #define MOUSE_EVENT_LBUTTON 0x01
152 #define MOUSE_EVENT_RBUTTON 0x02
153 #define MOUSE_EVENT_MBUTTON 0x04
154
155 typedef void QEMUPutKBDEvent(void *opaque, int keycode);
156 typedef void QEMUPutMouseEvent(void *opaque, int dx, int dy, int dz, int buttons_state);
157
158 void qemu_add_kbd_event_handler(QEMUPutKBDEvent *func, void *opaque);
159 void qemu_add_mouse_event_handler(QEMUPutMouseEvent *func, void *opaque);
160
161 void kbd_put_keycode(int keycode);
162 void kbd_mouse_event(int dx, int dy, int dz, int buttons_state);
163
164 /* keysym is a unicode code except for special keys (see QEMU_KEY_xxx
165    constants) */
166 #define QEMU_KEY_ESC1(c) ((c) | 0xe100)
167 #define QEMU_KEY_BACKSPACE  0x007f
168 #define QEMU_KEY_UP         QEMU_KEY_ESC1('A')
169 #define QEMU_KEY_DOWN       QEMU_KEY_ESC1('B')
170 #define QEMU_KEY_RIGHT      QEMU_KEY_ESC1('C')
171 #define QEMU_KEY_LEFT       QEMU_KEY_ESC1('D')
172 #define QEMU_KEY_HOME       QEMU_KEY_ESC1(1)
173 #define QEMU_KEY_END        QEMU_KEY_ESC1(4)
174 #define QEMU_KEY_PAGEUP     QEMU_KEY_ESC1(5)
175 #define QEMU_KEY_PAGEDOWN   QEMU_KEY_ESC1(6)
176 #define QEMU_KEY_DELETE     QEMU_KEY_ESC1(3)
177
178 #define QEMU_KEY_CTRL_UP         0xe400
179 #define QEMU_KEY_CTRL_DOWN       0xe401
180 #define QEMU_KEY_CTRL_LEFT       0xe402
181 #define QEMU_KEY_CTRL_RIGHT      0xe403
182 #define QEMU_KEY_CTRL_HOME       0xe404
183 #define QEMU_KEY_CTRL_END        0xe405
184 #define QEMU_KEY_CTRL_PAGEUP     0xe406
185 #define QEMU_KEY_CTRL_PAGEDOWN   0xe407
186
187 void kbd_put_keysym(int keysym);
188
189 /* async I/O support */
190
191 typedef void IOReadHandler(void *opaque, const uint8_t *buf, int size);
192 typedef int IOCanRWHandler(void *opaque);
193
194 int qemu_add_fd_read_handler(int fd, IOCanRWHandler *fd_can_read, 
195                              IOReadHandler *fd_read, void *opaque);
196 void qemu_del_fd_read_handler(int fd);
197
198 /* character device */
199
200 #define CHR_EVENT_BREAK 0 /* serial break char */
201 #define CHR_EVENT_FOCUS 1 /* focus to this terminal (modal input needed) */
202
203
204
205 #define CHR_IOCTL_SERIAL_SET_PARAMS   1
206 typedef struct {
207     int speed;
208     int parity;
209     int data_bits;
210     int stop_bits;
211 } QEMUSerialSetParams;
212
213 #define CHR_IOCTL_SERIAL_SET_BREAK    2
214
215 #define CHR_IOCTL_PP_READ_DATA        3
216 #define CHR_IOCTL_PP_WRITE_DATA       4
217 #define CHR_IOCTL_PP_READ_CONTROL     5
218 #define CHR_IOCTL_PP_WRITE_CONTROL    6
219 #define CHR_IOCTL_PP_READ_STATUS      7
220
221 typedef void IOEventHandler(void *opaque, int event);
222
223 typedef struct CharDriverState {
224     int (*chr_write)(struct CharDriverState *s, const uint8_t *buf, int len);
225     void (*chr_add_read_handler)(struct CharDriverState *s, 
226                                  IOCanRWHandler *fd_can_read, 
227                                  IOReadHandler *fd_read, void *opaque);
228     int (*chr_ioctl)(struct CharDriverState *s, int cmd, void *arg);
229     IOEventHandler *chr_event;
230     void (*chr_send_event)(struct CharDriverState *chr, int event);
231     void *opaque;
232 } CharDriverState;
233
234 void qemu_chr_printf(CharDriverState *s, const char *fmt, ...);
235 int qemu_chr_write(CharDriverState *s, const uint8_t *buf, int len);
236 void qemu_chr_send_event(CharDriverState *s, int event);
237 void qemu_chr_add_read_handler(CharDriverState *s, 
238                                IOCanRWHandler *fd_can_read, 
239                                IOReadHandler *fd_read, void *opaque);
240 void qemu_chr_add_event_handler(CharDriverState *s, IOEventHandler *chr_event);
241 int qemu_chr_ioctl(CharDriverState *s, int cmd, void *arg);
242
243 /* consoles */
244
245 typedef struct DisplayState DisplayState;
246 typedef struct TextConsole TextConsole;
247
248 extern TextConsole *vga_console;
249
250 TextConsole *graphic_console_init(DisplayState *ds);
251 int is_active_console(TextConsole *s);
252 CharDriverState *text_console_init(DisplayState *ds);
253 void console_select(unsigned int index);
254
255 /* serial ports */
256
257 #define MAX_SERIAL_PORTS 4
258
259 extern CharDriverState *serial_hds[MAX_SERIAL_PORTS];
260
261 /* parallel ports */
262
263 #define MAX_PARALLEL_PORTS 3
264
265 extern CharDriverState *parallel_hds[MAX_PARALLEL_PORTS];
266
267 /* network redirectors support */
268
269 #define MAX_NICS 8
270
271 typedef struct NetDriverState {
272     int index; /* index number in QEMU */
273     uint8_t macaddr[6];
274     char ifname[16];
275     void (*send_packet)(struct NetDriverState *nd, 
276                         const uint8_t *buf, int size);
277     void (*add_read_packet)(struct NetDriverState *nd, 
278                             IOCanRWHandler *fd_can_read, 
279                             IOReadHandler *fd_read, void *opaque);
280     /* tun specific data */
281     int fd;
282     /* slirp specific data */
283 } NetDriverState;
284
285 extern int nb_nics;
286 extern NetDriverState nd_table[MAX_NICS];
287
288 void qemu_send_packet(NetDriverState *nd, const uint8_t *buf, int size);
289 void qemu_add_read_packet(NetDriverState *nd, IOCanRWHandler *fd_can_read, 
290                           IOReadHandler *fd_read, void *opaque);
291
292 /* timers */
293
294 typedef struct QEMUClock QEMUClock;
295 typedef struct QEMUTimer QEMUTimer;
296 typedef void QEMUTimerCB(void *opaque);
297
298 /* The real time clock should be used only for stuff which does not
299    change the virtual machine state, as it is run even if the virtual
300    machine is stopped. The real time clock has a frequency of 1000
301    Hz. */
302 extern QEMUClock *rt_clock;
303
304 /* The virtual clock is only run during the emulation. It is stopped
305    when the virtual machine is stopped. Virtual timers use a high
306    precision clock, usually cpu cycles (use ticks_per_sec). */
307 extern QEMUClock *vm_clock;
308
309 int64_t qemu_get_clock(QEMUClock *clock);
310
311 QEMUTimer *qemu_new_timer(QEMUClock *clock, QEMUTimerCB *cb, void *opaque);
312 void qemu_free_timer(QEMUTimer *ts);
313 void qemu_del_timer(QEMUTimer *ts);
314 void qemu_mod_timer(QEMUTimer *ts, int64_t expire_time);
315 int qemu_timer_pending(QEMUTimer *ts);
316
317 extern int64_t ticks_per_sec;
318 extern int pit_min_timer_count;
319
320 void cpu_enable_ticks(void);
321 void cpu_disable_ticks(void);
322
323 /* VM Load/Save */
324
325 typedef FILE QEMUFile;
326
327 void qemu_put_buffer(QEMUFile *f, const uint8_t *buf, int size);
328 void qemu_put_byte(QEMUFile *f, int v);
329 void qemu_put_be16(QEMUFile *f, unsigned int v);
330 void qemu_put_be32(QEMUFile *f, unsigned int v);
331 void qemu_put_be64(QEMUFile *f, uint64_t v);
332 int qemu_get_buffer(QEMUFile *f, uint8_t *buf, int size);
333 int qemu_get_byte(QEMUFile *f);
334 unsigned int qemu_get_be16(QEMUFile *f);
335 unsigned int qemu_get_be32(QEMUFile *f);
336 uint64_t qemu_get_be64(QEMUFile *f);
337
338 static inline void qemu_put_be64s(QEMUFile *f, const uint64_t *pv)
339 {
340     qemu_put_be64(f, *pv);
341 }
342
343 static inline void qemu_put_be32s(QEMUFile *f, const uint32_t *pv)
344 {
345     qemu_put_be32(f, *pv);
346 }
347
348 static inline void qemu_put_be16s(QEMUFile *f, const uint16_t *pv)
349 {
350     qemu_put_be16(f, *pv);
351 }
352
353 static inline void qemu_put_8s(QEMUFile *f, const uint8_t *pv)
354 {
355     qemu_put_byte(f, *pv);
356 }
357
358 static inline void qemu_get_be64s(QEMUFile *f, uint64_t *pv)
359 {
360     *pv = qemu_get_be64(f);
361 }
362
363 static inline void qemu_get_be32s(QEMUFile *f, uint32_t *pv)
364 {
365     *pv = qemu_get_be32(f);
366 }
367
368 static inline void qemu_get_be16s(QEMUFile *f, uint16_t *pv)
369 {
370     *pv = qemu_get_be16(f);
371 }
372
373 static inline void qemu_get_8s(QEMUFile *f, uint8_t *pv)
374 {
375     *pv = qemu_get_byte(f);
376 }
377
378 #if TARGET_LONG_BITS == 64
379 #define qemu_put_betl qemu_put_be64
380 #define qemu_get_betl qemu_get_be64
381 #define qemu_put_betls qemu_put_be64s
382 #define qemu_get_betls qemu_get_be64s
383 #else
384 #define qemu_put_betl qemu_put_be32
385 #define qemu_get_betl qemu_get_be32
386 #define qemu_put_betls qemu_put_be32s
387 #define qemu_get_betls qemu_get_be32s
388 #endif
389
390 int64_t qemu_ftell(QEMUFile *f);
391 int64_t qemu_fseek(QEMUFile *f, int64_t pos, int whence);
392
393 typedef void SaveStateHandler(QEMUFile *f, void *opaque);
394 typedef int LoadStateHandler(QEMUFile *f, void *opaque, int version_id);
395
396 int qemu_loadvm(const char *filename);
397 int qemu_savevm(const char *filename);
398 int register_savevm(const char *idstr, 
399                     int instance_id, 
400                     int version_id,
401                     SaveStateHandler *save_state,
402                     LoadStateHandler *load_state,
403                     void *opaque);
404 void qemu_get_timer(QEMUFile *f, QEMUTimer *ts);
405 void qemu_put_timer(QEMUFile *f, QEMUTimer *ts);
406
407 /* block.c */
408 typedef struct BlockDriverState BlockDriverState;
409 typedef struct BlockDriver BlockDriver;
410
411 extern BlockDriver bdrv_raw;
412 extern BlockDriver bdrv_cow;
413 extern BlockDriver bdrv_qcow;
414 extern BlockDriver bdrv_vmdk;
415 extern BlockDriver bdrv_cloop;
416 extern BlockDriver bdrv_dmg;
417 extern BlockDriver bdrv_bochs;
418 extern BlockDriver bdrv_vpc;
419 extern BlockDriver bdrv_vvfat;
420
421 void bdrv_init(void);
422 BlockDriver *bdrv_find_format(const char *format_name);
423 int bdrv_create(BlockDriver *drv, 
424                 const char *filename, int64_t size_in_sectors,
425                 const char *backing_file, int flags);
426 BlockDriverState *bdrv_new(const char *device_name);
427 void bdrv_delete(BlockDriverState *bs);
428 int bdrv_open(BlockDriverState *bs, const char *filename, int snapshot);
429 int bdrv_open2(BlockDriverState *bs, const char *filename, int snapshot,
430                BlockDriver *drv);
431 void bdrv_close(BlockDriverState *bs);
432 int bdrv_read(BlockDriverState *bs, int64_t sector_num, 
433               uint8_t *buf, int nb_sectors);
434 int bdrv_write(BlockDriverState *bs, int64_t sector_num, 
435                const uint8_t *buf, int nb_sectors);
436 void bdrv_get_geometry(BlockDriverState *bs, int64_t *nb_sectors_ptr);
437 int bdrv_commit(BlockDriverState *bs);
438 void bdrv_set_boot_sector(BlockDriverState *bs, const uint8_t *data, int size);
439
440 #define BDRV_TYPE_HD     0
441 #define BDRV_TYPE_CDROM  1
442 #define BDRV_TYPE_FLOPPY 2
443 #define BIOS_ATA_TRANSLATION_AUTO 0
444 #define BIOS_ATA_TRANSLATION_NONE 1
445 #define BIOS_ATA_TRANSLATION_LBA  2
446
447 void bdrv_set_geometry_hint(BlockDriverState *bs, 
448                             int cyls, int heads, int secs);
449 void bdrv_set_type_hint(BlockDriverState *bs, int type);
450 void bdrv_set_translation_hint(BlockDriverState *bs, int translation);
451 void bdrv_get_geometry_hint(BlockDriverState *bs, 
452                             int *pcyls, int *pheads, int *psecs);
453 int bdrv_get_type_hint(BlockDriverState *bs);
454 int bdrv_get_translation_hint(BlockDriverState *bs);
455 int bdrv_is_removable(BlockDriverState *bs);
456 int bdrv_is_read_only(BlockDriverState *bs);
457 int bdrv_is_inserted(BlockDriverState *bs);
458 int bdrv_is_locked(BlockDriverState *bs);
459 void bdrv_set_locked(BlockDriverState *bs, int locked);
460 void bdrv_set_change_cb(BlockDriverState *bs, 
461                         void (*change_cb)(void *opaque), void *opaque);
462 void bdrv_get_format(BlockDriverState *bs, char *buf, int buf_size);
463 void bdrv_info(void);
464 BlockDriverState *bdrv_find(const char *name);
465 void bdrv_iterate(void (*it)(void *opaque, const char *name), void *opaque);
466 int bdrv_is_encrypted(BlockDriverState *bs);
467 int bdrv_set_key(BlockDriverState *bs, const char *key);
468 void bdrv_iterate_format(void (*it)(void *opaque, const char *name), 
469                          void *opaque);
470 const char *bdrv_get_device_name(BlockDriverState *bs);
471
472 int qcow_get_cluster_size(BlockDriverState *bs);
473 int qcow_compress_cluster(BlockDriverState *bs, int64_t sector_num,
474                           const uint8_t *buf);
475
476 #ifndef QEMU_TOOL
477
478 typedef void QEMUMachineInitFunc(int ram_size, int vga_ram_size, 
479                                  int boot_device,
480              DisplayState *ds, const char **fd_filename, int snapshot,
481              const char *kernel_filename, const char *kernel_cmdline,
482              const char *initrd_filename);
483
484 typedef struct QEMUMachine {
485     const char *name;
486     const char *desc;
487     QEMUMachineInitFunc *init;
488     struct QEMUMachine *next;
489 } QEMUMachine;
490
491 int qemu_register_machine(QEMUMachine *m);
492
493 typedef void SetIRQFunc(void *opaque, int irq_num, int level);
494 typedef void IRQRequestFunc(void *opaque, int level);
495
496 /* ISA bus */
497
498 extern target_phys_addr_t isa_mem_base;
499
500 typedef void (IOPortWriteFunc)(void *opaque, uint32_t address, uint32_t data);
501 typedef uint32_t (IOPortReadFunc)(void *opaque, uint32_t address);
502
503 int register_ioport_read(int start, int length, int size, 
504                          IOPortReadFunc *func, void *opaque);
505 int register_ioport_write(int start, int length, int size, 
506                           IOPortWriteFunc *func, void *opaque);
507 void isa_unassign_ioport(int start, int length);
508
509 /* PCI bus */
510
511 extern target_phys_addr_t pci_mem_base;
512
513 typedef struct PCIBus PCIBus;
514 typedef struct PCIDevice PCIDevice;
515
516 typedef void PCIConfigWriteFunc(PCIDevice *pci_dev, 
517                                 uint32_t address, uint32_t data, int len);
518 typedef uint32_t PCIConfigReadFunc(PCIDevice *pci_dev, 
519                                    uint32_t address, int len);
520 typedef void PCIMapIORegionFunc(PCIDevice *pci_dev, int region_num, 
521                                 uint32_t addr, uint32_t size, int type);
522
523 #define PCI_ADDRESS_SPACE_MEM           0x00
524 #define PCI_ADDRESS_SPACE_IO            0x01
525 #define PCI_ADDRESS_SPACE_MEM_PREFETCH  0x08
526
527 typedef struct PCIIORegion {
528     uint32_t addr; /* current PCI mapping address. -1 means not mapped */
529     uint32_t size;
530     uint8_t type;
531     PCIMapIORegionFunc *map_func;
532 } PCIIORegion;
533
534 #define PCI_ROM_SLOT 6
535 #define PCI_NUM_REGIONS 7
536 struct PCIDevice {
537     /* PCI config space */
538     uint8_t config[256];
539
540     /* the following fields are read only */
541     PCIBus *bus;
542     int devfn;
543     char name[64];
544     PCIIORegion io_regions[PCI_NUM_REGIONS];
545     
546     /* do not access the following fields */
547     PCIConfigReadFunc *config_read;
548     PCIConfigWriteFunc *config_write;
549     int irq_index;
550 };
551
552 PCIDevice *pci_register_device(PCIBus *bus, const char *name,
553                                int instance_size, int devfn,
554                                PCIConfigReadFunc *config_read, 
555                                PCIConfigWriteFunc *config_write);
556
557 void pci_register_io_region(PCIDevice *pci_dev, int region_num, 
558                             uint32_t size, int type, 
559                             PCIMapIORegionFunc *map_func);
560
561 void pci_set_irq(PCIDevice *pci_dev, int irq_num, int level);
562
563 uint32_t pci_default_read_config(PCIDevice *d, 
564                                  uint32_t address, int len);
565 void pci_default_write_config(PCIDevice *d, 
566                               uint32_t address, uint32_t val, int len);
567 void generic_pci_save(QEMUFile* f, void *opaque);
568 int generic_pci_load(QEMUFile* f, void *opaque, int version_id);
569
570 extern struct PIIX3State *piix3_state;
571
572 PCIBus *i440fx_init(void);
573 void piix3_init(PCIBus *bus);
574 void pci_bios_init(void);
575 void pci_info(void);
576
577 /* temporary: will be moved in platform specific file */
578 void pci_set_pic(PCIBus *bus, SetIRQFunc *set_irq, void *irq_opaque);
579 PCIBus *pci_prep_init(void);
580 PCIBus *pci_grackle_init(uint32_t base);
581 PCIBus *pci_pmac_init(void);
582 PCIBus *pci_apb_init(target_ulong special_base, target_ulong mem_base);
583
584 /* openpic.c */
585 typedef struct openpic_t openpic_t;
586 void openpic_set_irq(void *opaque, int n_IRQ, int level);
587 openpic_t *openpic_init (PCIBus *bus, int *pmem_index, int nb_cpus);
588
589 /* heathrow_pic.c */
590 typedef struct HeathrowPICS HeathrowPICS;
591 void heathrow_pic_set_irq(void *opaque, int num, int level);
592 HeathrowPICS *heathrow_pic_init(int *pmem_index);
593
594 /* vga.c */
595
596 #define VGA_RAM_SIZE (4096 * 1024)
597
598 struct DisplayState {
599     uint8_t *data;
600     int linesize;
601     int depth;
602     int width;
603     int height;
604     void (*dpy_update)(struct DisplayState *s, int x, int y, int w, int h);
605     void (*dpy_resize)(struct DisplayState *s, int w, int h);
606     void (*dpy_refresh)(struct DisplayState *s);
607 };
608
609 static inline void dpy_update(DisplayState *s, int x, int y, int w, int h)
610 {
611     s->dpy_update(s, x, y, w, h);
612 }
613
614 static inline void dpy_resize(DisplayState *s, int w, int h)
615 {
616     s->dpy_resize(s, w, h);
617 }
618
619 int vga_initialize(PCIBus *bus, DisplayState *ds, uint8_t *vga_ram_base, 
620                    unsigned long vga_ram_offset, int vga_ram_size,
621                    unsigned long vga_bios_offset, int vga_bios_size);
622 void vga_update_display(void);
623 void vga_invalidate_display(void);
624 void vga_screen_dump(const char *filename);
625
626 /* cirrus_vga.c */
627 void pci_cirrus_vga_init(PCIBus *bus, DisplayState *ds, uint8_t *vga_ram_base, 
628                          unsigned long vga_ram_offset, int vga_ram_size);
629 void isa_cirrus_vga_init(DisplayState *ds, uint8_t *vga_ram_base, 
630                          unsigned long vga_ram_offset, int vga_ram_size);
631
632 /* sdl.c */
633 void sdl_display_init(DisplayState *ds, int full_screen);
634
635 /* cocoa.m */
636 void cocoa_display_init(DisplayState *ds, int full_screen);
637
638 /* ide.c */
639 #define MAX_DISKS 4
640
641 extern BlockDriverState *bs_table[MAX_DISKS];
642
643 void isa_ide_init(int iobase, int iobase2, int irq,
644                   BlockDriverState *hd0, BlockDriverState *hd1);
645 void pci_cmd646_ide_init(PCIBus *bus, BlockDriverState **hd_table,
646                          int secondary_ide_enabled);
647 void pci_piix3_ide_init(PCIBus *bus, BlockDriverState **hd_table);
648 int pmac_ide_init (BlockDriverState **hd_table,
649                    SetIRQFunc *set_irq, void *irq_opaque, int irq);
650
651 /* es1370.c */
652 int es1370_init (PCIBus *bus, AudioState *s);
653
654 /* sb16.c */
655 int SB16_init (AudioState *s);
656
657 /* adlib.c */
658 int Adlib_init (AudioState *s);
659
660 /* gus.c */
661 int GUS_init (AudioState *s);
662
663 /* dma.c */
664 typedef int (*DMA_transfer_handler) (void *opaque, int nchan, int pos, int size);
665 int DMA_get_channel_mode (int nchan);
666 int DMA_read_memory (int nchan, void *buf, int pos, int size);
667 int DMA_write_memory (int nchan, void *buf, int pos, int size);
668 void DMA_hold_DREQ (int nchan);
669 void DMA_release_DREQ (int nchan);
670 void DMA_schedule(int nchan);
671 void DMA_run (void);
672 void DMA_init (int high_page_enable);
673 void DMA_register_channel (int nchan,
674                            DMA_transfer_handler transfer_handler,
675                            void *opaque);
676 /* fdc.c */
677 #define MAX_FD 2
678 extern BlockDriverState *fd_table[MAX_FD];
679
680 typedef struct fdctrl_t fdctrl_t;
681
682 fdctrl_t *fdctrl_init (int irq_lvl, int dma_chann, int mem_mapped, 
683                        uint32_t io_base,
684                        BlockDriverState **fds);
685 int fdctrl_get_drive_type(fdctrl_t *fdctrl, int drive_num);
686
687 /* ne2000.c */
688
689 void isa_ne2000_init(int base, int irq, NetDriverState *nd);
690 void pci_ne2000_init(PCIBus *bus, NetDriverState *nd);
691
692 /* pckbd.c */
693
694 void kbd_init(void);
695
696 /* mc146818rtc.c */
697
698 typedef struct RTCState RTCState;
699
700 RTCState *rtc_init(int base, int irq);
701 void rtc_set_memory(RTCState *s, int addr, int val);
702 void rtc_set_date(RTCState *s, const struct tm *tm);
703
704 /* serial.c */
705
706 typedef struct SerialState SerialState;
707 SerialState *serial_init(int base, int irq, CharDriverState *chr);
708
709 /* parallel.c */
710
711 typedef struct ParallelState ParallelState;
712 ParallelState *parallel_init(int base, int irq, CharDriverState *chr);
713
714 /* i8259.c */
715
716 typedef struct PicState2 PicState2;
717 extern PicState2 *isa_pic;
718 void pic_set_irq(int irq, int level);
719 void pic_set_irq_new(void *opaque, int irq, int level);
720 PicState2 *pic_init(IRQRequestFunc *irq_request, void *irq_request_opaque);
721 void pic_set_alt_irq_func(PicState2 *s, SetIRQFunc *alt_irq_func,
722                           void *alt_irq_opaque);
723 int pic_read_irq(PicState2 *s);
724 void pic_update_irq(PicState2 *s);
725 uint32_t pic_intack_read(PicState2 *s);
726 void pic_info(void);
727 void irq_info(void);
728
729 /* APIC */
730 typedef struct IOAPICState IOAPICState;
731
732 int apic_init(CPUState *env);
733 int apic_get_interrupt(CPUState *env);
734 IOAPICState *ioapic_init(void);
735 void ioapic_set_irq(void *opaque, int vector, int level);
736
737 /* i8254.c */
738
739 #define PIT_FREQ 1193182
740
741 typedef struct PITState PITState;
742
743 PITState *pit_init(int base, int irq);
744 void pit_set_gate(PITState *pit, int channel, int val);
745 int pit_get_gate(PITState *pit, int channel);
746 int pit_get_out(PITState *pit, int channel, int64_t current_time);
747
748 /* pc.c */
749 extern QEMUMachine pc_machine;
750 extern QEMUMachine isapc_machine;
751
752 /* ppc.c */
753 extern QEMUMachine prep_machine;
754 extern QEMUMachine core99_machine;
755 extern QEMUMachine heathrow_machine;
756
757 /* mips_r4k.c */
758 extern QEMUMachine mips_machine;
759
760 #ifdef TARGET_PPC
761 ppc_tb_t *cpu_ppc_tb_init (CPUState *env, uint32_t freq);
762 #endif
763 void PREP_debug_write (void *opaque, uint32_t addr, uint32_t val);
764
765 extern CPUWriteMemoryFunc *PPC_io_write[];
766 extern CPUReadMemoryFunc *PPC_io_read[];
767 void PPC_debug_write (void *opaque, uint32_t addr, uint32_t val);
768
769 /* sun4m.c */
770 extern QEMUMachine sun4m_machine;
771 uint32_t iommu_translate(uint32_t addr);
772
773 /* iommu.c */
774 void *iommu_init(uint32_t addr);
775 uint32_t iommu_translate_local(void *opaque, uint32_t addr);
776
777 /* lance.c */
778 void lance_init(NetDriverState *nd, int irq, uint32_t leaddr, uint32_t ledaddr);
779
780 /* tcx.c */
781 void *tcx_init(DisplayState *ds, uint32_t addr, uint8_t *vram_base,
782                unsigned long vram_offset, int vram_size, int width, int height);
783 void tcx_update_display(void *opaque);
784 void tcx_invalidate_display(void *opaque);
785 void tcx_screen_dump(void *opaque, const char *filename);
786
787 /* slavio_intctl.c */
788 void *slavio_intctl_init();
789 void slavio_pic_info(void *opaque);
790 void slavio_irq_info(void *opaque);
791 void slavio_pic_set_irq(void *opaque, int irq, int level);
792
793 /* magic-load.c */
794 int load_elf(const char *filename, uint8_t *addr);
795 int load_aout(const char *filename, uint8_t *addr);
796
797 /* slavio_timer.c */
798 void slavio_timer_init(uint32_t addr1, int irq1, uint32_t addr2, int irq2);
799
800 /* slavio_serial.c */
801 SerialState *slavio_serial_init(int base, int irq, CharDriverState *chr1, CharDriverState *chr2);
802 void slavio_serial_ms_kbd_init(int base, int irq);
803
804 /* slavio_misc.c */
805 void *slavio_misc_init(uint32_t base, int irq);
806 void slavio_set_power_fail(void *opaque, int power_failing);
807
808 /* esp.c */
809 void esp_init(BlockDriverState **bd, int irq, uint32_t espaddr, uint32_t espdaddr);
810
811 /* sun4u.c */
812 extern QEMUMachine sun4u_machine;
813
814 /* NVRAM helpers */
815 #include "hw/m48t59.h"
816
817 void NVRAM_set_byte (m48t59_t *nvram, uint32_t addr, uint8_t value);
818 uint8_t NVRAM_get_byte (m48t59_t *nvram, uint32_t addr);
819 void NVRAM_set_word (m48t59_t *nvram, uint32_t addr, uint16_t value);
820 uint16_t NVRAM_get_word (m48t59_t *nvram, uint32_t addr);
821 void NVRAM_set_lword (m48t59_t *nvram, uint32_t addr, uint32_t value);
822 uint32_t NVRAM_get_lword (m48t59_t *nvram, uint32_t addr);
823 void NVRAM_set_string (m48t59_t *nvram, uint32_t addr,
824                        const unsigned char *str, uint32_t max);
825 int NVRAM_get_string (m48t59_t *nvram, uint8_t *dst, uint16_t addr, int max);
826 void NVRAM_set_crc (m48t59_t *nvram, uint32_t addr,
827                     uint32_t start, uint32_t count);
828 int PPC_NVRAM_set_params (m48t59_t *nvram, uint16_t NVRAM_size,
829                           const unsigned char *arch,
830                           uint32_t RAM_size, int boot_device,
831                           uint32_t kernel_image, uint32_t kernel_size,
832                           const char *cmdline,
833                           uint32_t initrd_image, uint32_t initrd_size,
834                           uint32_t NVRAM_image,
835                           int width, int height, int depth);
836
837 /* adb.c */
838
839 #define MAX_ADB_DEVICES 16
840
841 #define ADB_MAX_OUT_LEN 16
842
843 typedef struct ADBDevice ADBDevice;
844
845 /* buf = NULL means polling */
846 typedef int ADBDeviceRequest(ADBDevice *d, uint8_t *buf_out,
847                               const uint8_t *buf, int len);
848 typedef int ADBDeviceReset(ADBDevice *d);
849
850 struct ADBDevice {
851     struct ADBBusState *bus;
852     int devaddr;
853     int handler;
854     ADBDeviceRequest *devreq;
855     ADBDeviceReset *devreset;
856     void *opaque;
857 };
858
859 typedef struct ADBBusState {
860     ADBDevice devices[MAX_ADB_DEVICES];
861     int nb_devices;
862     int poll_index;
863 } ADBBusState;
864
865 int adb_request(ADBBusState *s, uint8_t *buf_out,
866                 const uint8_t *buf, int len);
867 int adb_poll(ADBBusState *s, uint8_t *buf_out);
868
869 ADBDevice *adb_register_device(ADBBusState *s, int devaddr, 
870                                ADBDeviceRequest *devreq, 
871                                ADBDeviceReset *devreset, 
872                                void *opaque);
873 void adb_kbd_init(ADBBusState *bus);
874 void adb_mouse_init(ADBBusState *bus);
875
876 /* cuda.c */
877
878 extern ADBBusState adb_bus;
879 int cuda_init(SetIRQFunc *set_irq, void *irq_opaque, int irq);
880
881 #include "hw/usb.h"
882
883 /* usb ports of the VM */
884
885 #define MAX_VM_USB_PORTS 8
886
887 extern USBPort *vm_usb_ports[MAX_VM_USB_PORTS];
888 extern USBDevice *vm_usb_hub;
889
890 void do_usb_add(const char *devname);
891 void do_usb_del(const char *devname);
892 void usb_info(void);
893
894 #endif /* defined(QEMU_TOOL) */
895
896 /* monitor.c */
897 void monitor_init(CharDriverState *hd, int show_banner);
898 void term_puts(const char *str);
899 void term_vprintf(const char *fmt, va_list ap);
900 void term_printf(const char *fmt, ...) __attribute__ ((__format__ (__printf__, 1, 2)));
901 void term_flush(void);
902 void term_print_help(void);
903 void monitor_readline(const char *prompt, int is_password,
904                       char *buf, int buf_size);
905
906 /* readline.c */
907 typedef void ReadLineFunc(void *opaque, const char *str);
908
909 extern int completion_index;
910 void add_completion(const char *str);
911 void readline_handle_byte(int ch);
912 void readline_find_completion(const char *cmdline);
913 const char *readline_get_history(unsigned int index);
914 void readline_start(const char *prompt, int is_password,
915                     ReadLineFunc *readline_func, void *opaque);
916
917 void kqemu_record_dump(void);
918
919 #endif /* VL_H */
This page took 0.072025 seconds and 4 git commands to generate.