Statistics
| Branch: | Revision:

root / vl.h @ 4de9b249

History | View | Annotate | Download (44.2 kB)

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

    
41
#ifndef O_LARGEFILE
42
#define O_LARGEFILE 0
43
#endif
44
#ifndef O_BINARY
45
#define O_BINARY 0
46
#endif
47

    
48
#ifdef __sun__
49
#define ENOMEDIUM 4097
50
#endif
51

    
52
#ifdef _WIN32
53
#include <windows.h>
54
#define fsync _commit
55
#define lseek _lseeki64
56
#define ENOTSUP 4096
57
#define ENOMEDIUM 4097
58
extern int qemu_ftruncate64(int, int64_t);
59
#define ftruncate qemu_ftruncate64
60

    
61

    
62
static inline char *realpath(const char *path, char *resolved_path)
63
{
64
    _fullpath(resolved_path, path, _MAX_PATH);
65
    return resolved_path;
66
}
67

    
68
#define PRId64 "I64d"
69
#define PRIx64 "I64x"
70
#define PRIu64 "I64u"
71
#define PRIo64 "I64o"
72
#endif
73

    
74
#ifdef QEMU_TOOL
75

    
76
/* we use QEMU_TOOL in the command line tools which do not depend on
77
   the target CPU type */
78
#include "config-host.h"
79
#include <setjmp.h>
80
#include "osdep.h"
81
#include "bswap.h"
82

    
83
#else
84

    
85
#include "audio/audio.h"
86
#include "cpu.h"
87
#include "gdbstub.h"
88

    
89
#endif /* !defined(QEMU_TOOL) */
90

    
91
#ifndef glue
92
#define xglue(x, y) x ## y
93
#define glue(x, y) xglue(x, y)
94
#define stringify(s)        tostring(s)
95
#define tostring(s)        #s
96
#endif
97

    
98
#ifndef MIN
99
#define MIN(a, b) (((a) < (b)) ? (a) : (b))
100
#endif
101
#ifndef MAX
102
#define MAX(a, b) (((a) > (b)) ? (a) : (b))
103
#endif
104

    
105
/* cutils.c */
106
void pstrcpy(char *buf, int buf_size, const char *str);
107
char *pstrcat(char *buf, int buf_size, const char *s);
108
int strstart(const char *str, const char *val, const char **ptr);
109
int stristart(const char *str, const char *val, const char **ptr);
110

    
111
/* vl.c */
112
uint64_t muldiv64(uint64_t a, uint32_t b, uint32_t c);
113

    
114
void hw_error(const char *fmt, ...);
115

    
116
extern const char *bios_dir;
117

    
118
extern int vm_running;
119

    
120
typedef struct vm_change_state_entry VMChangeStateEntry;
121
typedef void VMChangeStateHandler(void *opaque, int running);
122
typedef void VMStopHandler(void *opaque, int reason);
123

    
124
VMChangeStateEntry *qemu_add_vm_change_state_handler(VMChangeStateHandler *cb,
125
                                                     void *opaque);
126
void qemu_del_vm_change_state_handler(VMChangeStateEntry *e);
127

    
128
int qemu_add_vm_stop_handler(VMStopHandler *cb, void *opaque);
129
void qemu_del_vm_stop_handler(VMStopHandler *cb, void *opaque);
130

    
131
void vm_start(void);
132
void vm_stop(int reason);
133

    
134
typedef void QEMUResetHandler(void *opaque);
135

    
136
void qemu_register_reset(QEMUResetHandler *func, void *opaque);
137
void qemu_system_reset_request(void);
138
void qemu_system_shutdown_request(void);
139
void qemu_system_powerdown_request(void);
140
#if !defined(TARGET_SPARC)
141
// Please implement a power failure function to signal the OS
142
#define qemu_system_powerdown() do{}while(0)
143
#else
144
void qemu_system_powerdown(void);
145
#endif
146

    
147
void main_loop_wait(int timeout);
148

    
149
extern int ram_size;
150
extern int bios_size;
151
extern int rtc_utc;
152
extern int cirrus_vga_enabled;
153
extern int graphic_width;
154
extern int graphic_height;
155
extern int graphic_depth;
156
extern const char *keyboard_layout;
157
extern int kqemu_allowed;
158
extern int win2k_install_hack;
159
extern int usb_enabled;
160
extern int smp_cpus;
161
extern int no_quit;
162
extern int semihosting_enabled;
163
extern int autostart;
164

    
165
#define MAX_OPTION_ROMS 16
166
extern const char *option_rom[MAX_OPTION_ROMS];
167
extern int nb_option_roms;
168

    
169
/* XXX: make it dynamic */
170
#if defined (TARGET_PPC) || defined (TARGET_SPARC64)
171
#define BIOS_SIZE ((512 + 32) * 1024)
172
#elif defined(TARGET_MIPS)
173
#define BIOS_SIZE (4 * 1024 * 1024)
174
#else
175
#define BIOS_SIZE ((256 + 64) * 1024)
176
#endif
177

    
178
/* keyboard/mouse support */
179

    
180
#define MOUSE_EVENT_LBUTTON 0x01
181
#define MOUSE_EVENT_RBUTTON 0x02
182
#define MOUSE_EVENT_MBUTTON 0x04
183

    
184
typedef void QEMUPutKBDEvent(void *opaque, int keycode);
185
typedef void QEMUPutMouseEvent(void *opaque, int dx, int dy, int dz, int buttons_state);
186

    
187
typedef struct QEMUPutMouseEntry {
188
    QEMUPutMouseEvent *qemu_put_mouse_event;
189
    void *qemu_put_mouse_event_opaque;
190
    int qemu_put_mouse_event_absolute;
191
    char *qemu_put_mouse_event_name;
192

    
193
    /* used internally by qemu for handling mice */
194
    struct QEMUPutMouseEntry *next;
195
} QEMUPutMouseEntry;
196

    
197
void qemu_add_kbd_event_handler(QEMUPutKBDEvent *func, void *opaque);
198
QEMUPutMouseEntry *qemu_add_mouse_event_handler(QEMUPutMouseEvent *func,
199
                                                void *opaque, int absolute,
200
                                                const char *name);
201
void qemu_remove_mouse_event_handler(QEMUPutMouseEntry *entry);
202

    
203
void kbd_put_keycode(int keycode);
204
void kbd_mouse_event(int dx, int dy, int dz, int buttons_state);
205
int kbd_mouse_is_absolute(void);
206

    
207
void do_info_mice(void);
208
void do_mouse_set(int index);
209

    
210
/* keysym is a unicode code except for special keys (see QEMU_KEY_xxx
211
   constants) */
212
#define QEMU_KEY_ESC1(c) ((c) | 0xe100)
213
#define QEMU_KEY_BACKSPACE  0x007f
214
#define QEMU_KEY_UP         QEMU_KEY_ESC1('A')
215
#define QEMU_KEY_DOWN       QEMU_KEY_ESC1('B')
216
#define QEMU_KEY_RIGHT      QEMU_KEY_ESC1('C')
217
#define QEMU_KEY_LEFT       QEMU_KEY_ESC1('D')
218
#define QEMU_KEY_HOME       QEMU_KEY_ESC1(1)
219
#define QEMU_KEY_END        QEMU_KEY_ESC1(4)
220
#define QEMU_KEY_PAGEUP     QEMU_KEY_ESC1(5)
221
#define QEMU_KEY_PAGEDOWN   QEMU_KEY_ESC1(6)
222
#define QEMU_KEY_DELETE     QEMU_KEY_ESC1(3)
223

    
224
#define QEMU_KEY_CTRL_UP         0xe400
225
#define QEMU_KEY_CTRL_DOWN       0xe401
226
#define QEMU_KEY_CTRL_LEFT       0xe402
227
#define QEMU_KEY_CTRL_RIGHT      0xe403
228
#define QEMU_KEY_CTRL_HOME       0xe404
229
#define QEMU_KEY_CTRL_END        0xe405
230
#define QEMU_KEY_CTRL_PAGEUP     0xe406
231
#define QEMU_KEY_CTRL_PAGEDOWN   0xe407
232

    
233
void kbd_put_keysym(int keysym);
234

    
235
/* async I/O support */
236

    
237
typedef void IOReadHandler(void *opaque, const uint8_t *buf, int size);
238
typedef int IOCanRWHandler(void *opaque);
239
typedef void IOHandler(void *opaque);
240

    
241
int qemu_set_fd_handler2(int fd, 
242
                         IOCanRWHandler *fd_read_poll, 
243
                         IOHandler *fd_read, 
244
                         IOHandler *fd_write, 
245
                         void *opaque);
246
int qemu_set_fd_handler(int fd,
247
                        IOHandler *fd_read, 
248
                        IOHandler *fd_write,
249
                        void *opaque);
250

    
251
/* Polling handling */
252

    
253
/* return TRUE if no sleep should be done afterwards */
254
typedef int PollingFunc(void *opaque);
255

    
256
int qemu_add_polling_cb(PollingFunc *func, void *opaque);
257
void qemu_del_polling_cb(PollingFunc *func, void *opaque);
258

    
259
#ifdef _WIN32
260
/* Wait objects handling */
261
typedef void WaitObjectFunc(void *opaque);
262

    
263
int qemu_add_wait_object(HANDLE handle, WaitObjectFunc *func, void *opaque);
264
void qemu_del_wait_object(HANDLE handle, WaitObjectFunc *func, void *opaque);
265
#endif
266

    
267
typedef struct QEMUBH QEMUBH;
268

    
269
/* character device */
270

    
271
#define CHR_EVENT_BREAK 0 /* serial break char */
272
#define CHR_EVENT_FOCUS 1 /* focus to this terminal (modal input needed) */
273
#define CHR_EVENT_RESET 2 /* new connection established */
274

    
275

    
276
#define CHR_IOCTL_SERIAL_SET_PARAMS   1
277
typedef struct {
278
    int speed;
279
    int parity;
280
    int data_bits;
281
    int stop_bits;
282
} QEMUSerialSetParams;
283

    
284
#define CHR_IOCTL_SERIAL_SET_BREAK    2
285

    
286
#define CHR_IOCTL_PP_READ_DATA        3
287
#define CHR_IOCTL_PP_WRITE_DATA       4
288
#define CHR_IOCTL_PP_READ_CONTROL     5
289
#define CHR_IOCTL_PP_WRITE_CONTROL    6
290
#define CHR_IOCTL_PP_READ_STATUS      7
291

    
292
typedef void IOEventHandler(void *opaque, int event);
293

    
294
typedef struct CharDriverState {
295
    int (*chr_write)(struct CharDriverState *s, const uint8_t *buf, int len);
296
    void (*chr_add_read_handler)(struct CharDriverState *s, 
297
                                 IOCanRWHandler *fd_can_read, 
298
                                 IOReadHandler *fd_read, void *opaque);
299
    int (*chr_ioctl)(struct CharDriverState *s, int cmd, void *arg);
300
    IOEventHandler *chr_event;
301
    void (*chr_send_event)(struct CharDriverState *chr, int event);
302
    void (*chr_close)(struct CharDriverState *chr);
303
    void *opaque;
304
    QEMUBH *bh;
305
} CharDriverState;
306

    
307
CharDriverState *qemu_chr_open(const char *filename);
308
void qemu_chr_printf(CharDriverState *s, const char *fmt, ...);
309
int qemu_chr_write(CharDriverState *s, const uint8_t *buf, int len);
310
void qemu_chr_send_event(CharDriverState *s, int event);
311
void qemu_chr_add_read_handler(CharDriverState *s, 
312
                               IOCanRWHandler *fd_can_read, 
313
                               IOReadHandler *fd_read, void *opaque);
314
void qemu_chr_add_event_handler(CharDriverState *s, IOEventHandler *chr_event);
315
int qemu_chr_ioctl(CharDriverState *s, int cmd, void *arg);
316
void qemu_chr_reset(CharDriverState *s);
317

    
318
/* consoles */
319

    
320
typedef struct DisplayState DisplayState;
321
typedef struct TextConsole TextConsole;
322

    
323
typedef void (*vga_hw_update_ptr)(void *);
324
typedef void (*vga_hw_invalidate_ptr)(void *);
325
typedef void (*vga_hw_screen_dump_ptr)(void *, const char *);
326

    
327
TextConsole *graphic_console_init(DisplayState *ds, vga_hw_update_ptr update,
328
                                  vga_hw_invalidate_ptr invalidate,
329
                                  vga_hw_screen_dump_ptr screen_dump,
330
                                  void *opaque);
331
void vga_hw_update(void);
332
void vga_hw_invalidate(void);
333
void vga_hw_screen_dump(const char *filename);
334

    
335
int is_graphic_console(void);
336
CharDriverState *text_console_init(DisplayState *ds);
337
void console_select(unsigned int index);
338

    
339
/* serial ports */
340

    
341
#define MAX_SERIAL_PORTS 4
342

    
343
extern CharDriverState *serial_hds[MAX_SERIAL_PORTS];
344

    
345
/* parallel ports */
346

    
347
#define MAX_PARALLEL_PORTS 3
348

    
349
extern CharDriverState *parallel_hds[MAX_PARALLEL_PORTS];
350

    
351
/* VLANs support */
352

    
353
typedef struct VLANClientState VLANClientState;
354

    
355
struct VLANClientState {
356
    IOReadHandler *fd_read;
357
    /* Packets may still be sent if this returns zero.  It's used to
358
       rate-limit the slirp code.  */
359
    IOCanRWHandler *fd_can_read;
360
    void *opaque;
361
    struct VLANClientState *next;
362
    struct VLANState *vlan;
363
    char info_str[256];
364
};
365

    
366
typedef struct VLANState {
367
    int id;
368
    VLANClientState *first_client;
369
    struct VLANState *next;
370
} VLANState;
371

    
372
VLANState *qemu_find_vlan(int id);
373
VLANClientState *qemu_new_vlan_client(VLANState *vlan,
374
                                      IOReadHandler *fd_read,
375
                                      IOCanRWHandler *fd_can_read,
376
                                      void *opaque);
377
int qemu_can_send_packet(VLANClientState *vc);
378
void qemu_send_packet(VLANClientState *vc, const uint8_t *buf, int size);
379
void qemu_handler_true(void *opaque);
380

    
381
void do_info_network(void);
382

    
383
/* TAP win32 */
384
int tap_win32_init(VLANState *vlan, const char *ifname);
385

    
386
/* NIC info */
387

    
388
#define MAX_NICS 8
389

    
390
typedef struct NICInfo {
391
    uint8_t macaddr[6];
392
    const char *model;
393
    VLANState *vlan;
394
} NICInfo;
395

    
396
extern int nb_nics;
397
extern NICInfo nd_table[MAX_NICS];
398

    
399
/* timers */
400

    
401
typedef struct QEMUClock QEMUClock;
402
typedef struct QEMUTimer QEMUTimer;
403
typedef void QEMUTimerCB(void *opaque);
404

    
405
/* The real time clock should be used only for stuff which does not
406
   change the virtual machine state, as it is run even if the virtual
407
   machine is stopped. The real time clock has a frequency of 1000
408
   Hz. */
409
extern QEMUClock *rt_clock;
410

    
411
/* The virtual clock is only run during the emulation. It is stopped
412
   when the virtual machine is stopped. Virtual timers use a high
413
   precision clock, usually cpu cycles (use ticks_per_sec). */
414
extern QEMUClock *vm_clock;
415

    
416
int64_t qemu_get_clock(QEMUClock *clock);
417

    
418
QEMUTimer *qemu_new_timer(QEMUClock *clock, QEMUTimerCB *cb, void *opaque);
419
void qemu_free_timer(QEMUTimer *ts);
420
void qemu_del_timer(QEMUTimer *ts);
421
void qemu_mod_timer(QEMUTimer *ts, int64_t expire_time);
422
int qemu_timer_pending(QEMUTimer *ts);
423

    
424
extern int64_t ticks_per_sec;
425
extern int pit_min_timer_count;
426

    
427
int64_t cpu_get_ticks(void);
428
void cpu_enable_ticks(void);
429
void cpu_disable_ticks(void);
430

    
431
/* VM Load/Save */
432

    
433
typedef struct QEMUFile QEMUFile;
434

    
435
QEMUFile *qemu_fopen(const char *filename, const char *mode);
436
void qemu_fflush(QEMUFile *f);
437
void qemu_fclose(QEMUFile *f);
438
void qemu_put_buffer(QEMUFile *f, const uint8_t *buf, int size);
439
void qemu_put_byte(QEMUFile *f, int v);
440
void qemu_put_be16(QEMUFile *f, unsigned int v);
441
void qemu_put_be32(QEMUFile *f, unsigned int v);
442
void qemu_put_be64(QEMUFile *f, uint64_t v);
443
int qemu_get_buffer(QEMUFile *f, uint8_t *buf, int size);
444
int qemu_get_byte(QEMUFile *f);
445
unsigned int qemu_get_be16(QEMUFile *f);
446
unsigned int qemu_get_be32(QEMUFile *f);
447
uint64_t qemu_get_be64(QEMUFile *f);
448

    
449
static inline void qemu_put_be64s(QEMUFile *f, const uint64_t *pv)
450
{
451
    qemu_put_be64(f, *pv);
452
}
453

    
454
static inline void qemu_put_be32s(QEMUFile *f, const uint32_t *pv)
455
{
456
    qemu_put_be32(f, *pv);
457
}
458

    
459
static inline void qemu_put_be16s(QEMUFile *f, const uint16_t *pv)
460
{
461
    qemu_put_be16(f, *pv);
462
}
463

    
464
static inline void qemu_put_8s(QEMUFile *f, const uint8_t *pv)
465
{
466
    qemu_put_byte(f, *pv);
467
}
468

    
469
static inline void qemu_get_be64s(QEMUFile *f, uint64_t *pv)
470
{
471
    *pv = qemu_get_be64(f);
472
}
473

    
474
static inline void qemu_get_be32s(QEMUFile *f, uint32_t *pv)
475
{
476
    *pv = qemu_get_be32(f);
477
}
478

    
479
static inline void qemu_get_be16s(QEMUFile *f, uint16_t *pv)
480
{
481
    *pv = qemu_get_be16(f);
482
}
483

    
484
static inline void qemu_get_8s(QEMUFile *f, uint8_t *pv)
485
{
486
    *pv = qemu_get_byte(f);
487
}
488

    
489
#if TARGET_LONG_BITS == 64
490
#define qemu_put_betl qemu_put_be64
491
#define qemu_get_betl qemu_get_be64
492
#define qemu_put_betls qemu_put_be64s
493
#define qemu_get_betls qemu_get_be64s
494
#else
495
#define qemu_put_betl qemu_put_be32
496
#define qemu_get_betl qemu_get_be32
497
#define qemu_put_betls qemu_put_be32s
498
#define qemu_get_betls qemu_get_be32s
499
#endif
500

    
501
int64_t qemu_ftell(QEMUFile *f);
502
int64_t qemu_fseek(QEMUFile *f, int64_t pos, int whence);
503

    
504
typedef void SaveStateHandler(QEMUFile *f, void *opaque);
505
typedef int LoadStateHandler(QEMUFile *f, void *opaque, int version_id);
506

    
507
int register_savevm(const char *idstr, 
508
                    int instance_id, 
509
                    int version_id,
510
                    SaveStateHandler *save_state,
511
                    LoadStateHandler *load_state,
512
                    void *opaque);
513
void qemu_get_timer(QEMUFile *f, QEMUTimer *ts);
514
void qemu_put_timer(QEMUFile *f, QEMUTimer *ts);
515

    
516
void cpu_save(QEMUFile *f, void *opaque);
517
int cpu_load(QEMUFile *f, void *opaque, int version_id);
518

    
519
void do_savevm(const char *name);
520
void do_loadvm(const char *name);
521
void do_delvm(const char *name);
522
void do_info_snapshots(void);
523

    
524
/* bottom halves */
525
typedef void QEMUBHFunc(void *opaque);
526

    
527
QEMUBH *qemu_bh_new(QEMUBHFunc *cb, void *opaque);
528
void qemu_bh_schedule(QEMUBH *bh);
529
void qemu_bh_cancel(QEMUBH *bh);
530
void qemu_bh_delete(QEMUBH *bh);
531
int qemu_bh_poll(void);
532

    
533
/* block.c */
534
typedef struct BlockDriverState BlockDriverState;
535
typedef struct BlockDriver BlockDriver;
536

    
537
extern BlockDriver bdrv_raw;
538
extern BlockDriver bdrv_host_device;
539
extern BlockDriver bdrv_cow;
540
extern BlockDriver bdrv_qcow;
541
extern BlockDriver bdrv_vmdk;
542
extern BlockDriver bdrv_cloop;
543
extern BlockDriver bdrv_dmg;
544
extern BlockDriver bdrv_bochs;
545
extern BlockDriver bdrv_vpc;
546
extern BlockDriver bdrv_vvfat;
547
extern BlockDriver bdrv_qcow2;
548

    
549
typedef struct BlockDriverInfo {
550
    /* in bytes, 0 if irrelevant */
551
    int cluster_size; 
552
    /* offset at which the VM state can be saved (0 if not possible) */
553
    int64_t vm_state_offset; 
554
} BlockDriverInfo;
555

    
556
typedef struct QEMUSnapshotInfo {
557
    char id_str[128]; /* unique snapshot id */
558
    /* the following fields are informative. They are not needed for
559
       the consistency of the snapshot */
560
    char name[256]; /* user choosen name */
561
    uint32_t vm_state_size; /* VM state info size */
562
    uint32_t date_sec; /* UTC date of the snapshot */
563
    uint32_t date_nsec;
564
    uint64_t vm_clock_nsec; /* VM clock relative to boot */
565
} QEMUSnapshotInfo;
566

    
567
#define BDRV_O_RDONLY      0x0000
568
#define BDRV_O_RDWR        0x0002
569
#define BDRV_O_ACCESS      0x0003
570
#define BDRV_O_CREAT       0x0004 /* create an empty file */
571
#define BDRV_O_SNAPSHOT    0x0008 /* open the file read only and save writes in a snapshot */
572
#define BDRV_O_FILE        0x0010 /* open as a raw file (do not try to
573
                                     use a disk image format on top of
574
                                     it (default for
575
                                     bdrv_file_open()) */
576

    
577
void bdrv_init(void);
578
BlockDriver *bdrv_find_format(const char *format_name);
579
int bdrv_create(BlockDriver *drv, 
580
                const char *filename, int64_t size_in_sectors,
581
                const char *backing_file, int flags);
582
BlockDriverState *bdrv_new(const char *device_name);
583
void bdrv_delete(BlockDriverState *bs);
584
int bdrv_file_open(BlockDriverState **pbs, const char *filename, int flags);
585
int bdrv_open(BlockDriverState *bs, const char *filename, int flags);
586
int bdrv_open2(BlockDriverState *bs, const char *filename, int flags,
587
               BlockDriver *drv);
588
void bdrv_close(BlockDriverState *bs);
589
int bdrv_read(BlockDriverState *bs, int64_t sector_num, 
590
              uint8_t *buf, int nb_sectors);
591
int bdrv_write(BlockDriverState *bs, int64_t sector_num, 
592
               const uint8_t *buf, int nb_sectors);
593
int bdrv_pread(BlockDriverState *bs, int64_t offset, 
594
               void *buf, int count);
595
int bdrv_pwrite(BlockDriverState *bs, int64_t offset, 
596
                const void *buf, int count);
597
int bdrv_truncate(BlockDriverState *bs, int64_t offset);
598
int64_t bdrv_getlength(BlockDriverState *bs);
599
void bdrv_get_geometry(BlockDriverState *bs, int64_t *nb_sectors_ptr);
600
int bdrv_commit(BlockDriverState *bs);
601
void bdrv_set_boot_sector(BlockDriverState *bs, const uint8_t *data, int size);
602
/* async block I/O */
603
typedef struct BlockDriverAIOCB BlockDriverAIOCB;
604
typedef void BlockDriverCompletionFunc(void *opaque, int ret);
605

    
606
BlockDriverAIOCB *bdrv_aio_read(BlockDriverState *bs, int64_t sector_num,
607
                                uint8_t *buf, int nb_sectors,
608
                                BlockDriverCompletionFunc *cb, void *opaque);
609
BlockDriverAIOCB *bdrv_aio_write(BlockDriverState *bs, int64_t sector_num,
610
                                 const uint8_t *buf, int nb_sectors,
611
                                 BlockDriverCompletionFunc *cb, void *opaque);
612
void bdrv_aio_cancel(BlockDriverAIOCB *acb);
613

    
614
void qemu_aio_init(void);
615
void qemu_aio_poll(void);
616
void qemu_aio_flush(void);
617
void qemu_aio_wait_start(void);
618
void qemu_aio_wait(void);
619
void qemu_aio_wait_end(void);
620

    
621
/* Ensure contents are flushed to disk.  */
622
void bdrv_flush(BlockDriverState *bs);
623

    
624
#define BDRV_TYPE_HD     0
625
#define BDRV_TYPE_CDROM  1
626
#define BDRV_TYPE_FLOPPY 2
627
#define BIOS_ATA_TRANSLATION_AUTO   0
628
#define BIOS_ATA_TRANSLATION_NONE   1
629
#define BIOS_ATA_TRANSLATION_LBA    2
630
#define BIOS_ATA_TRANSLATION_LARGE  3
631
#define BIOS_ATA_TRANSLATION_RECHS  4
632

    
633
void bdrv_set_geometry_hint(BlockDriverState *bs, 
634
                            int cyls, int heads, int secs);
635
void bdrv_set_type_hint(BlockDriverState *bs, int type);
636
void bdrv_set_translation_hint(BlockDriverState *bs, int translation);
637
void bdrv_get_geometry_hint(BlockDriverState *bs, 
638
                            int *pcyls, int *pheads, int *psecs);
639
int bdrv_get_type_hint(BlockDriverState *bs);
640
int bdrv_get_translation_hint(BlockDriverState *bs);
641
int bdrv_is_removable(BlockDriverState *bs);
642
int bdrv_is_read_only(BlockDriverState *bs);
643
int bdrv_is_inserted(BlockDriverState *bs);
644
int bdrv_media_changed(BlockDriverState *bs);
645
int bdrv_is_locked(BlockDriverState *bs);
646
void bdrv_set_locked(BlockDriverState *bs, int locked);
647
void bdrv_eject(BlockDriverState *bs, int eject_flag);
648
void bdrv_set_change_cb(BlockDriverState *bs, 
649
                        void (*change_cb)(void *opaque), void *opaque);
650
void bdrv_get_format(BlockDriverState *bs, char *buf, int buf_size);
651
void bdrv_info(void);
652
BlockDriverState *bdrv_find(const char *name);
653
void bdrv_iterate(void (*it)(void *opaque, const char *name), void *opaque);
654
int bdrv_is_encrypted(BlockDriverState *bs);
655
int bdrv_set_key(BlockDriverState *bs, const char *key);
656
void bdrv_iterate_format(void (*it)(void *opaque, const char *name), 
657
                         void *opaque);
658
const char *bdrv_get_device_name(BlockDriverState *bs);
659
int bdrv_write_compressed(BlockDriverState *bs, int64_t sector_num, 
660
                          const uint8_t *buf, int nb_sectors);
661
int bdrv_get_info(BlockDriverState *bs, BlockDriverInfo *bdi);
662

    
663
void bdrv_get_backing_filename(BlockDriverState *bs, 
664
                               char *filename, int filename_size);
665
int bdrv_snapshot_create(BlockDriverState *bs, 
666
                         QEMUSnapshotInfo *sn_info);
667
int bdrv_snapshot_goto(BlockDriverState *bs, 
668
                       const char *snapshot_id);
669
int bdrv_snapshot_delete(BlockDriverState *bs, const char *snapshot_id);
670
int bdrv_snapshot_list(BlockDriverState *bs, 
671
                       QEMUSnapshotInfo **psn_info);
672
char *bdrv_snapshot_dump(char *buf, int buf_size, QEMUSnapshotInfo *sn);
673

    
674
char *get_human_readable_size(char *buf, int buf_size, int64_t size);
675
int path_is_absolute(const char *path);
676
void path_combine(char *dest, int dest_size,
677
                  const char *base_path,
678
                  const char *filename);
679

    
680
#ifndef QEMU_TOOL
681

    
682
typedef void QEMUMachineInitFunc(int ram_size, int vga_ram_size, 
683
                                 int boot_device,
684
             DisplayState *ds, const char **fd_filename, int snapshot,
685
             const char *kernel_filename, const char *kernel_cmdline,
686
             const char *initrd_filename);
687

    
688
typedef struct QEMUMachine {
689
    const char *name;
690
    const char *desc;
691
    QEMUMachineInitFunc *init;
692
    struct QEMUMachine *next;
693
} QEMUMachine;
694

    
695
int qemu_register_machine(QEMUMachine *m);
696

    
697
typedef void SetIRQFunc(void *opaque, int irq_num, int level);
698
typedef void IRQRequestFunc(void *opaque, int level);
699

    
700
/* ISA bus */
701

    
702
extern target_phys_addr_t isa_mem_base;
703

    
704
typedef void (IOPortWriteFunc)(void *opaque, uint32_t address, uint32_t data);
705
typedef uint32_t (IOPortReadFunc)(void *opaque, uint32_t address);
706

    
707
int register_ioport_read(int start, int length, int size, 
708
                         IOPortReadFunc *func, void *opaque);
709
int register_ioport_write(int start, int length, int size, 
710
                          IOPortWriteFunc *func, void *opaque);
711
void isa_unassign_ioport(int start, int length);
712

    
713
void isa_mmio_init(target_phys_addr_t base, target_phys_addr_t size);
714

    
715
/* PCI bus */
716

    
717
extern target_phys_addr_t pci_mem_base;
718

    
719
typedef struct PCIBus PCIBus;
720
typedef struct PCIDevice PCIDevice;
721

    
722
typedef void PCIConfigWriteFunc(PCIDevice *pci_dev, 
723
                                uint32_t address, uint32_t data, int len);
724
typedef uint32_t PCIConfigReadFunc(PCIDevice *pci_dev, 
725
                                   uint32_t address, int len);
726
typedef void PCIMapIORegionFunc(PCIDevice *pci_dev, int region_num, 
727
                                uint32_t addr, uint32_t size, int type);
728

    
729
#define PCI_ADDRESS_SPACE_MEM                0x00
730
#define PCI_ADDRESS_SPACE_IO                0x01
731
#define PCI_ADDRESS_SPACE_MEM_PREFETCH        0x08
732

    
733
typedef struct PCIIORegion {
734
    uint32_t addr; /* current PCI mapping address. -1 means not mapped */
735
    uint32_t size;
736
    uint8_t type;
737
    PCIMapIORegionFunc *map_func;
738
} PCIIORegion;
739

    
740
#define PCI_ROM_SLOT 6
741
#define PCI_NUM_REGIONS 7
742

    
743
#define PCI_DEVICES_MAX 64
744

    
745
#define PCI_VENDOR_ID                0x00        /* 16 bits */
746
#define PCI_DEVICE_ID                0x02        /* 16 bits */
747
#define PCI_COMMAND                0x04        /* 16 bits */
748
#define  PCI_COMMAND_IO                0x1        /* Enable response in I/O space */
749
#define  PCI_COMMAND_MEMORY        0x2        /* Enable response in Memory space */
750
#define PCI_CLASS_DEVICE        0x0a    /* Device class */
751
#define PCI_INTERRUPT_LINE        0x3c        /* 8 bits */
752
#define PCI_INTERRUPT_PIN        0x3d        /* 8 bits */
753
#define PCI_MIN_GNT                0x3e        /* 8 bits */
754
#define PCI_MAX_LAT                0x3f        /* 8 bits */
755

    
756
struct PCIDevice {
757
    /* PCI config space */
758
    uint8_t config[256];
759

    
760
    /* the following fields are read only */
761
    PCIBus *bus;
762
    int devfn;
763
    char name[64];
764
    PCIIORegion io_regions[PCI_NUM_REGIONS];
765
    
766
    /* do not access the following fields */
767
    PCIConfigReadFunc *config_read;
768
    PCIConfigWriteFunc *config_write;
769
    /* ??? This is a PC-specific hack, and should be removed.  */
770
    int irq_index;
771

    
772
    /* Current IRQ levels.  Used internally by the generic PCI code.  */
773
    int irq_state[4];
774
};
775

    
776
PCIDevice *pci_register_device(PCIBus *bus, const char *name,
777
                               int instance_size, int devfn,
778
                               PCIConfigReadFunc *config_read, 
779
                               PCIConfigWriteFunc *config_write);
780

    
781
void pci_register_io_region(PCIDevice *pci_dev, int region_num, 
782
                            uint32_t size, int type, 
783
                            PCIMapIORegionFunc *map_func);
784

    
785
void pci_set_irq(PCIDevice *pci_dev, int irq_num, int level);
786

    
787
uint32_t pci_default_read_config(PCIDevice *d, 
788
                                 uint32_t address, int len);
789
void pci_default_write_config(PCIDevice *d, 
790
                              uint32_t address, uint32_t val, int len);
791
void pci_device_save(PCIDevice *s, QEMUFile *f);
792
int pci_device_load(PCIDevice *s, QEMUFile *f);
793

    
794
typedef void (*pci_set_irq_fn)(void *pic, int irq_num, int level);
795
typedef int (*pci_map_irq_fn)(PCIDevice *pci_dev, int irq_num);
796
PCIBus *pci_register_bus(pci_set_irq_fn set_irq, pci_map_irq_fn map_irq,
797
                         void *pic, int devfn_min, int nirq);
798

    
799
void pci_nic_init(PCIBus *bus, NICInfo *nd, int devfn);
800
void pci_data_write(void *opaque, uint32_t addr, uint32_t val, int len);
801
uint32_t pci_data_read(void *opaque, uint32_t addr, int len);
802
int pci_bus_num(PCIBus *s);
803
void pci_for_each_device(int bus_num, void (*fn)(PCIDevice *d));
804

    
805
void pci_info(void);
806
PCIBus *pci_bridge_init(PCIBus *bus, int devfn, uint32_t id,
807
                        pci_map_irq_fn map_irq, const char *name);
808

    
809
/* prep_pci.c */
810
PCIBus *pci_prep_init(void);
811

    
812
/* grackle_pci.c */
813
PCIBus *pci_grackle_init(uint32_t base, void *pic);
814

    
815
/* unin_pci.c */
816
PCIBus *pci_pmac_init(void *pic);
817

    
818
/* apb_pci.c */
819
PCIBus *pci_apb_init(target_ulong special_base, target_ulong mem_base,
820
                     void *pic);
821

    
822
PCIBus *pci_vpb_init(void *pic, int irq, int realview);
823

    
824
/* piix_pci.c */
825
PCIBus *i440fx_init(PCIDevice **pi440fx_state);
826
void i440fx_set_smm(PCIDevice *d, int val);
827
int piix3_init(PCIBus *bus, int devfn);
828
void i440fx_init_memory_mappings(PCIDevice *d);
829

    
830
int piix4_init(PCIBus *bus, int devfn);
831

    
832
/* openpic.c */
833
typedef struct openpic_t openpic_t;
834
void openpic_set_irq(void *opaque, int n_IRQ, int level);
835
openpic_t *openpic_init (PCIBus *bus, int *pmem_index, int nb_cpus,
836
                         CPUState **envp);
837

    
838
/* heathrow_pic.c */
839
typedef struct HeathrowPICS HeathrowPICS;
840
void heathrow_pic_set_irq(void *opaque, int num, int level);
841
HeathrowPICS *heathrow_pic_init(int *pmem_index);
842

    
843
/* gt64xxx.c */
844
PCIBus *pci_gt64120_init(void *pic);
845

    
846
#ifdef HAS_AUDIO
847
struct soundhw {
848
    const char *name;
849
    const char *descr;
850
    int enabled;
851
    int isa;
852
    union {
853
        int (*init_isa) (AudioState *s);
854
        int (*init_pci) (PCIBus *bus, AudioState *s);
855
    } init;
856
};
857

    
858
extern struct soundhw soundhw[];
859
#endif
860

    
861
/* vga.c */
862

    
863
#define VGA_RAM_SIZE (8192 * 1024)
864

    
865
struct DisplayState {
866
    uint8_t *data;
867
    int linesize;
868
    int depth;
869
    int bgr; /* BGR color order instead of RGB. Only valid for depth == 32 */
870
    int width;
871
    int height;
872
    void *opaque;
873

    
874
    void (*dpy_update)(struct DisplayState *s, int x, int y, int w, int h);
875
    void (*dpy_resize)(struct DisplayState *s, int w, int h);
876
    void (*dpy_refresh)(struct DisplayState *s);
877
    void (*dpy_copy)(struct DisplayState *s, int src_x, int src_y, int dst_x, int dst_y, int w, int h);
878
};
879

    
880
static inline void dpy_update(DisplayState *s, int x, int y, int w, int h)
881
{
882
    s->dpy_update(s, x, y, w, h);
883
}
884

    
885
static inline void dpy_resize(DisplayState *s, int w, int h)
886
{
887
    s->dpy_resize(s, w, h);
888
}
889

    
890
int isa_vga_init(DisplayState *ds, uint8_t *vga_ram_base, 
891
                 unsigned long vga_ram_offset, int vga_ram_size);
892
int pci_vga_init(PCIBus *bus, DisplayState *ds, uint8_t *vga_ram_base, 
893
                 unsigned long vga_ram_offset, int vga_ram_size,
894
                 unsigned long vga_bios_offset, int vga_bios_size);
895

    
896
/* cirrus_vga.c */
897
void pci_cirrus_vga_init(PCIBus *bus, DisplayState *ds, uint8_t *vga_ram_base, 
898
                         unsigned long vga_ram_offset, int vga_ram_size);
899
void isa_cirrus_vga_init(DisplayState *ds, uint8_t *vga_ram_base, 
900
                         unsigned long vga_ram_offset, int vga_ram_size);
901

    
902
/* sdl.c */
903
void sdl_display_init(DisplayState *ds, int full_screen);
904

    
905
/* cocoa.m */
906
void cocoa_display_init(DisplayState *ds, int full_screen);
907

    
908
/* vnc.c */
909
void vnc_display_init(DisplayState *ds, const char *display);
910

    
911
/* ide.c */
912
#define MAX_DISKS 4
913

    
914
extern BlockDriverState *bs_table[MAX_DISKS + 1];
915

    
916
void isa_ide_init(int iobase, int iobase2, int irq,
917
                  BlockDriverState *hd0, BlockDriverState *hd1);
918
void pci_cmd646_ide_init(PCIBus *bus, BlockDriverState **hd_table,
919
                         int secondary_ide_enabled);
920
void pci_piix3_ide_init(PCIBus *bus, BlockDriverState **hd_table, int devfn);
921
int pmac_ide_init (BlockDriverState **hd_table,
922
                   SetIRQFunc *set_irq, void *irq_opaque, int irq);
923

    
924
/* cdrom.c */
925
int cdrom_read_toc(int nb_sectors, uint8_t *buf, int msf, int start_track);
926
int cdrom_read_toc_raw(int nb_sectors, uint8_t *buf, int msf, int session_num);
927

    
928
/* es1370.c */
929
int es1370_init (PCIBus *bus, AudioState *s);
930

    
931
/* sb16.c */
932
int SB16_init (AudioState *s);
933

    
934
/* adlib.c */
935
int Adlib_init (AudioState *s);
936

    
937
/* gus.c */
938
int GUS_init (AudioState *s);
939

    
940
/* dma.c */
941
typedef int (*DMA_transfer_handler) (void *opaque, int nchan, int pos, int size);
942
int DMA_get_channel_mode (int nchan);
943
int DMA_read_memory (int nchan, void *buf, int pos, int size);
944
int DMA_write_memory (int nchan, void *buf, int pos, int size);
945
void DMA_hold_DREQ (int nchan);
946
void DMA_release_DREQ (int nchan);
947
void DMA_schedule(int nchan);
948
void DMA_run (void);
949
void DMA_init (int high_page_enable);
950
void DMA_register_channel (int nchan,
951
                           DMA_transfer_handler transfer_handler,
952
                           void *opaque);
953
/* fdc.c */
954
#define MAX_FD 2
955
extern BlockDriverState *fd_table[MAX_FD];
956

    
957
typedef struct fdctrl_t fdctrl_t;
958

    
959
fdctrl_t *fdctrl_init (int irq_lvl, int dma_chann, int mem_mapped, 
960
                       uint32_t io_base,
961
                       BlockDriverState **fds);
962
int fdctrl_get_drive_type(fdctrl_t *fdctrl, int drive_num);
963

    
964
/* ne2000.c */
965

    
966
void isa_ne2000_init(int base, int irq, NICInfo *nd);
967
void pci_ne2000_init(PCIBus *bus, NICInfo *nd, int devfn);
968

    
969
/* rtl8139.c */
970

    
971
void pci_rtl8139_init(PCIBus *bus, NICInfo *nd, int devfn);
972

    
973
/* pcnet.c */
974

    
975
void pci_pcnet_init(PCIBus *bus, NICInfo *nd, int devfn);
976
void pcnet_h_reset(void *opaque);
977
void *lance_init(NICInfo *nd, uint32_t leaddr, void *dma_opaque);
978

    
979

    
980
/* pckbd.c */
981

    
982
void kbd_init(void);
983

    
984
/* mc146818rtc.c */
985

    
986
typedef struct RTCState RTCState;
987

    
988
RTCState *rtc_init(int base, int irq);
989
void rtc_set_memory(RTCState *s, int addr, int val);
990
void rtc_set_date(RTCState *s, const struct tm *tm);
991

    
992
/* serial.c */
993

    
994
typedef struct SerialState SerialState;
995
SerialState *serial_init(SetIRQFunc *set_irq, void *opaque,
996
                         int base, int irq, CharDriverState *chr);
997
SerialState *serial_mm_init (SetIRQFunc *set_irq, void *opaque,
998
                             target_ulong base, int it_shift,
999
                             int irq, CharDriverState *chr);
1000

    
1001
/* parallel.c */
1002

    
1003
typedef struct ParallelState ParallelState;
1004
ParallelState *parallel_init(int base, int irq, CharDriverState *chr);
1005

    
1006
/* i8259.c */
1007

    
1008
typedef struct PicState2 PicState2;
1009
extern PicState2 *isa_pic;
1010
void pic_set_irq(int irq, int level);
1011
void pic_set_irq_new(void *opaque, int irq, int level);
1012
PicState2 *pic_init(IRQRequestFunc *irq_request, void *irq_request_opaque);
1013
void pic_set_alt_irq_func(PicState2 *s, SetIRQFunc *alt_irq_func,
1014
                          void *alt_irq_opaque);
1015
int pic_read_irq(PicState2 *s);
1016
void pic_update_irq(PicState2 *s);
1017
uint32_t pic_intack_read(PicState2 *s);
1018
void pic_info(void);
1019
void irq_info(void);
1020

    
1021
/* APIC */
1022
typedef struct IOAPICState IOAPICState;
1023

    
1024
int apic_init(CPUState *env);
1025
int apic_get_interrupt(CPUState *env);
1026
IOAPICState *ioapic_init(void);
1027
void ioapic_set_irq(void *opaque, int vector, int level);
1028

    
1029
/* i8254.c */
1030

    
1031
#define PIT_FREQ 1193182
1032

    
1033
typedef struct PITState PITState;
1034

    
1035
PITState *pit_init(int base, int irq);
1036
void pit_set_gate(PITState *pit, int channel, int val);
1037
int pit_get_gate(PITState *pit, int channel);
1038
int pit_get_initial_count(PITState *pit, int channel);
1039
int pit_get_mode(PITState *pit, int channel);
1040
int pit_get_out(PITState *pit, int channel, int64_t current_time);
1041

    
1042
/* pcspk.c */
1043
void pcspk_init(PITState *);
1044
int pcspk_audio_init(AudioState *);
1045

    
1046
/* acpi.c */
1047
extern int acpi_enabled;
1048
void piix4_pm_init(PCIBus *bus, int devfn);
1049
void acpi_bios_init(void);
1050

    
1051
/* pc.c */
1052
extern QEMUMachine pc_machine;
1053
extern QEMUMachine isapc_machine;
1054
extern int fd_bootchk;
1055

    
1056
void ioport_set_a20(int enable);
1057
int ioport_get_a20(void);
1058

    
1059
/* ppc.c */
1060
extern QEMUMachine prep_machine;
1061
extern QEMUMachine core99_machine;
1062
extern QEMUMachine heathrow_machine;
1063

    
1064
/* mips_r4k.c */
1065
extern QEMUMachine mips_machine;
1066

    
1067
/* mips_malta.c */
1068
extern QEMUMachine mips_malta_machine;
1069

    
1070
/* mips_int */
1071
extern void cpu_mips_irq_request(void *opaque, int irq, int level);
1072

    
1073
/* mips_timer.c */
1074
extern void cpu_mips_clock_init(CPUState *);
1075
extern void cpu_mips_irqctrl_init (void);
1076

    
1077
/* shix.c */
1078
extern QEMUMachine shix_machine;
1079

    
1080
#ifdef TARGET_PPC
1081
ppc_tb_t *cpu_ppc_tb_init (CPUState *env, uint32_t freq);
1082
#endif
1083
void PREP_debug_write (void *opaque, uint32_t addr, uint32_t val);
1084

    
1085
extern CPUWriteMemoryFunc *PPC_io_write[];
1086
extern CPUReadMemoryFunc *PPC_io_read[];
1087
void PPC_debug_write (void *opaque, uint32_t addr, uint32_t val);
1088

    
1089
/* sun4m.c */
1090
extern QEMUMachine sun4m_machine;
1091
void pic_set_irq_cpu(int irq, int level, unsigned int cpu);
1092

    
1093
/* iommu.c */
1094
void *iommu_init(uint32_t addr);
1095
void sparc_iommu_memory_rw(void *opaque, target_phys_addr_t addr,
1096
                                 uint8_t *buf, int len, int is_write);
1097
static inline void sparc_iommu_memory_read(void *opaque,
1098
                                           target_phys_addr_t addr,
1099
                                           uint8_t *buf, int len)
1100
{
1101
    sparc_iommu_memory_rw(opaque, addr, buf, len, 0);
1102
}
1103

    
1104
static inline void sparc_iommu_memory_write(void *opaque,
1105
                                            target_phys_addr_t addr,
1106
                                            uint8_t *buf, int len)
1107
{
1108
    sparc_iommu_memory_rw(opaque, addr, buf, len, 1);
1109
}
1110

    
1111
/* tcx.c */
1112
void tcx_init(DisplayState *ds, uint32_t addr, uint8_t *vram_base,
1113
               unsigned long vram_offset, int vram_size, int width, int height);
1114

    
1115
/* slavio_intctl.c */
1116
void *slavio_intctl_init();
1117
void slavio_intctl_set_cpu(void *opaque, unsigned int cpu, CPUState *env);
1118
void slavio_pic_info(void *opaque);
1119
void slavio_irq_info(void *opaque);
1120
void slavio_pic_set_irq(void *opaque, int irq, int level);
1121
void slavio_pic_set_irq_cpu(void *opaque, int irq, int level, unsigned int cpu);
1122

    
1123
/* loader.c */
1124
int get_image_size(const char *filename);
1125
int load_image(const char *filename, uint8_t *addr);
1126
int load_elf(const char *filename, int64_t virt_to_phys_addend, uint64_t *pentry);
1127
int load_aout(const char *filename, uint8_t *addr);
1128

    
1129
/* slavio_timer.c */
1130
void slavio_timer_init(uint32_t addr, int irq, int mode, unsigned int cpu);
1131

    
1132
/* slavio_serial.c */
1133
SerialState *slavio_serial_init(int base, int irq, CharDriverState *chr1, CharDriverState *chr2);
1134
void slavio_serial_ms_kbd_init(int base, int irq);
1135

    
1136
/* slavio_misc.c */
1137
void *slavio_misc_init(uint32_t base, int irq);
1138
void slavio_set_power_fail(void *opaque, int power_failing);
1139

    
1140
/* esp.c */
1141
void esp_scsi_attach(void *opaque, BlockDriverState *bd, int id);
1142
void *esp_init(BlockDriverState **bd, uint32_t espaddr, void *dma_opaque);
1143
void esp_reset(void *opaque);
1144

    
1145
/* sparc32_dma.c */
1146
void *sparc32_dma_init(uint32_t daddr, int espirq, int leirq, void *iommu,
1147
                       void *intctl);
1148
void ledma_set_irq(void *opaque, int isr);
1149
void ledma_memory_read(void *opaque, target_phys_addr_t addr, 
1150
                       uint8_t *buf, int len, int do_bswap);
1151
void ledma_memory_write(void *opaque, target_phys_addr_t addr, 
1152
                        uint8_t *buf, int len, int do_bswap);
1153
void espdma_raise_irq(void *opaque);
1154
void espdma_clear_irq(void *opaque);
1155
void espdma_memory_read(void *opaque, uint8_t *buf, int len);
1156
void espdma_memory_write(void *opaque, uint8_t *buf, int len);
1157
void sparc32_dma_set_reset_data(void *opaque, void *esp_opaque,
1158
                                void *lance_opaque);
1159

    
1160
/* cs4231.c */
1161
void cs_init(target_phys_addr_t base, int irq, void *intctl);
1162

    
1163
/* sun4u.c */
1164
extern QEMUMachine sun4u_machine;
1165

    
1166
/* NVRAM helpers */
1167
#include "hw/m48t59.h"
1168

    
1169
void NVRAM_set_byte (m48t59_t *nvram, uint32_t addr, uint8_t value);
1170
uint8_t NVRAM_get_byte (m48t59_t *nvram, uint32_t addr);
1171
void NVRAM_set_word (m48t59_t *nvram, uint32_t addr, uint16_t value);
1172
uint16_t NVRAM_get_word (m48t59_t *nvram, uint32_t addr);
1173
void NVRAM_set_lword (m48t59_t *nvram, uint32_t addr, uint32_t value);
1174
uint32_t NVRAM_get_lword (m48t59_t *nvram, uint32_t addr);
1175
void NVRAM_set_string (m48t59_t *nvram, uint32_t addr,
1176
                       const unsigned char *str, uint32_t max);
1177
int NVRAM_get_string (m48t59_t *nvram, uint8_t *dst, uint16_t addr, int max);
1178
void NVRAM_set_crc (m48t59_t *nvram, uint32_t addr,
1179
                    uint32_t start, uint32_t count);
1180
int PPC_NVRAM_set_params (m48t59_t *nvram, uint16_t NVRAM_size,
1181
                          const unsigned char *arch,
1182
                          uint32_t RAM_size, int boot_device,
1183
                          uint32_t kernel_image, uint32_t kernel_size,
1184
                          const char *cmdline,
1185
                          uint32_t initrd_image, uint32_t initrd_size,
1186
                          uint32_t NVRAM_image,
1187
                          int width, int height, int depth);
1188

    
1189
/* adb.c */
1190

    
1191
#define MAX_ADB_DEVICES 16
1192

    
1193
#define ADB_MAX_OUT_LEN 16
1194

    
1195
typedef struct ADBDevice ADBDevice;
1196

    
1197
/* buf = NULL means polling */
1198
typedef int ADBDeviceRequest(ADBDevice *d, uint8_t *buf_out,
1199
                              const uint8_t *buf, int len);
1200
typedef int ADBDeviceReset(ADBDevice *d);
1201

    
1202
struct ADBDevice {
1203
    struct ADBBusState *bus;
1204
    int devaddr;
1205
    int handler;
1206
    ADBDeviceRequest *devreq;
1207
    ADBDeviceReset *devreset;
1208
    void *opaque;
1209
};
1210

    
1211
typedef struct ADBBusState {
1212
    ADBDevice devices[MAX_ADB_DEVICES];
1213
    int nb_devices;
1214
    int poll_index;
1215
} ADBBusState;
1216

    
1217
int adb_request(ADBBusState *s, uint8_t *buf_out,
1218
                const uint8_t *buf, int len);
1219
int adb_poll(ADBBusState *s, uint8_t *buf_out);
1220

    
1221
ADBDevice *adb_register_device(ADBBusState *s, int devaddr, 
1222
                               ADBDeviceRequest *devreq, 
1223
                               ADBDeviceReset *devreset, 
1224
                               void *opaque);
1225
void adb_kbd_init(ADBBusState *bus);
1226
void adb_mouse_init(ADBBusState *bus);
1227

    
1228
/* cuda.c */
1229

    
1230
extern ADBBusState adb_bus;
1231
int cuda_init(SetIRQFunc *set_irq, void *irq_opaque, int irq);
1232

    
1233
#include "hw/usb.h"
1234

    
1235
/* usb ports of the VM */
1236

    
1237
void qemu_register_usb_port(USBPort *port, void *opaque, int index,
1238
                            usb_attachfn attach);
1239

    
1240
#define VM_USB_HUB_SIZE 8
1241

    
1242
void do_usb_add(const char *devname);
1243
void do_usb_del(const char *devname);
1244
void usb_info(void);
1245

    
1246
/* scsi-disk.c */
1247
enum scsi_reason {
1248
    SCSI_REASON_DONE, /* Command complete.  */
1249
    SCSI_REASON_DATA  /* Transfer complete, more data required.  */
1250
};
1251

    
1252
typedef struct SCSIDevice SCSIDevice;
1253
typedef void (*scsi_completionfn)(void *opaque, int reason, uint32_t tag,
1254
                                  uint32_t arg);
1255

    
1256
SCSIDevice *scsi_disk_init(BlockDriverState *bdrv,
1257
                           int tcq,
1258
                           scsi_completionfn completion,
1259
                           void *opaque);
1260
void scsi_disk_destroy(SCSIDevice *s);
1261

    
1262
int32_t scsi_send_command(SCSIDevice *s, uint32_t tag, uint8_t *buf, int lun);
1263
/* SCSI data transfers are asynchrnonous.  However, unlike the block IO
1264
   layer the completion routine may be called directly by
1265
   scsi_{read,write}_data.  */
1266
void scsi_read_data(SCSIDevice *s, uint32_t tag);
1267
int scsi_write_data(SCSIDevice *s, uint32_t tag);
1268
void scsi_cancel_io(SCSIDevice *s, uint32_t tag);
1269
uint8_t *scsi_get_buf(SCSIDevice *s, uint32_t tag);
1270

    
1271
/* lsi53c895a.c */
1272
void lsi_scsi_attach(void *opaque, BlockDriverState *bd, int id);
1273
void *lsi_scsi_init(PCIBus *bus, int devfn);
1274

    
1275
/* integratorcp.c */
1276
extern QEMUMachine integratorcp926_machine;
1277
extern QEMUMachine integratorcp1026_machine;
1278

    
1279
/* versatilepb.c */
1280
extern QEMUMachine versatilepb_machine;
1281
extern QEMUMachine versatileab_machine;
1282

    
1283
/* realview.c */
1284
extern QEMUMachine realview_machine;
1285

    
1286
/* ps2.c */
1287
void *ps2_kbd_init(void (*update_irq)(void *, int), void *update_arg);
1288
void *ps2_mouse_init(void (*update_irq)(void *, int), void *update_arg);
1289
void ps2_write_mouse(void *, int val);
1290
void ps2_write_keyboard(void *, int val);
1291
uint32_t ps2_read_data(void *);
1292
void ps2_queue(void *, int b);
1293
void ps2_keyboard_set_translation(void *opaque, int mode);
1294

    
1295
/* smc91c111.c */
1296
void smc91c111_init(NICInfo *, uint32_t, void *, int);
1297

    
1298
/* pl110.c */
1299
void *pl110_init(DisplayState *ds, uint32_t base, void *pic, int irq, int);
1300

    
1301
/* pl011.c */
1302
void pl011_init(uint32_t base, void *pic, int irq, CharDriverState *chr);
1303

    
1304
/* pl050.c */
1305
void pl050_init(uint32_t base, void *pic, int irq, int is_mouse);
1306

    
1307
/* pl080.c */
1308
void *pl080_init(uint32_t base, void *pic, int irq, int nchannels);
1309

    
1310
/* pl190.c */
1311
void *pl190_init(uint32_t base, void *parent, int irq, int fiq);
1312

    
1313
/* arm-timer.c */
1314
void sp804_init(uint32_t base, void *pic, int irq);
1315
void icp_pit_init(uint32_t base, void *pic, int irq);
1316

    
1317
/* arm_sysctl.c */
1318
void arm_sysctl_init(uint32_t base, uint32_t sys_id);
1319

    
1320
/* arm_gic.c */
1321
void *arm_gic_init(uint32_t base, void *parent, int parent_irq);
1322

    
1323
/* arm_boot.c */
1324

    
1325
void arm_load_kernel(CPUState *env, int ram_size, const char *kernel_filename,
1326
                     const char *kernel_cmdline, const char *initrd_filename,
1327
                     int board_id);
1328

    
1329
/* sh7750.c */
1330
struct SH7750State;
1331

    
1332
struct SH7750State *sh7750_init(CPUState * cpu);
1333

    
1334
typedef struct {
1335
    /* The callback will be triggered if any of the designated lines change */
1336
    uint16_t portamask_trigger;
1337
    uint16_t portbmask_trigger;
1338
    /* Return 0 if no action was taken */
1339
    int (*port_change_cb) (uint16_t porta, uint16_t portb,
1340
                           uint16_t * periph_pdtra,
1341
                           uint16_t * periph_portdira,
1342
                           uint16_t * periph_pdtrb,
1343
                           uint16_t * periph_portdirb);
1344
} sh7750_io_device;
1345

    
1346
int sh7750_register_io_device(struct SH7750State *s,
1347
                              sh7750_io_device * device);
1348
/* tc58128.c */
1349
int tc58128_init(struct SH7750State *s, char *zone1, char *zone2);
1350

    
1351
/* NOR flash devices */
1352
typedef struct pflash_t pflash_t;
1353

    
1354
pflash_t *pflash_register (target_ulong base, ram_addr_t off,
1355
                           BlockDriverState *bs,
1356
                           target_ulong sector_len, int nb_blocs, int width,
1357
                           uint16_t id0, uint16_t id1, 
1358
                           uint16_t id2, uint16_t id3);
1359

    
1360
#endif /* defined(QEMU_TOOL) */
1361

    
1362
/* monitor.c */
1363
void monitor_init(CharDriverState *hd, int show_banner);
1364
void term_puts(const char *str);
1365
void term_vprintf(const char *fmt, va_list ap);
1366
void term_printf(const char *fmt, ...) __attribute__ ((__format__ (__printf__, 1, 2)));
1367
void term_print_filename(const char *filename);
1368
void term_flush(void);
1369
void term_print_help(void);
1370
void monitor_readline(const char *prompt, int is_password,
1371
                      char *buf, int buf_size);
1372

    
1373
/* readline.c */
1374
typedef void ReadLineFunc(void *opaque, const char *str);
1375

    
1376
extern int completion_index;
1377
void add_completion(const char *str);
1378
void readline_handle_byte(int ch);
1379
void readline_find_completion(const char *cmdline);
1380
const char *readline_get_history(unsigned int index);
1381
void readline_start(const char *prompt, int is_password,
1382
                    ReadLineFunc *readline_func, void *opaque);
1383

    
1384
void kqemu_record_dump(void);
1385

    
1386
#endif /* VL_H */