]> git.proxmox.com Git - mirror_qemu.git/blame - vl.h
io port API change - removed dumb console redraw (not useful)
[mirror_qemu.git] / vl.h
CommitLineData
fc01f7e7
FB
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
16f62432
FB
27#include "cpu.h"
28
33e3963e 29/* vl.c */
313aa567 30extern int reset_requested;
27503323 31extern int64_t ticks_per_sec;
80cabfad 32extern int pit_min_timer_count;
313aa567 33
7138fcfb
FB
34typedef void (IOPortWriteFunc)(struct CPUState *env, uint32_t address, uint32_t data);
35typedef uint32_t (IOPortReadFunc)(struct CPUState *env, uint32_t address);
313aa567 36
313aa567
FB
37int register_ioport_read(int start, int length, IOPortReadFunc *func, int size);
38int register_ioport_write(int start, int length, IOPortWriteFunc *func, int size);
27503323 39int64_t cpu_get_ticks(void);
80cabfad 40uint64_t muldiv64(uint64_t a, uint32_t b, uint32_t c);
313aa567 41
80cabfad 42void net_send_packet(int net_fd, const uint8_t *buf, int size);
313aa567 43
80cabfad
FB
44void hw_error(const char *fmt, ...);
45
46int load_image(const char *filename, uint8_t *addr);
47extern const char *bios_dir;
48
49void pstrcpy(char *buf, int buf_size, const char *str);
50char *pstrcat(char *buf, int buf_size, const char *s);
33e3963e 51
fc01f7e7
FB
52/* block.c */
53typedef struct BlockDriverState BlockDriverState;
54
33e3963e 55BlockDriverState *bdrv_open(const char *filename, int snapshot);
fc01f7e7
FB
56void bdrv_close(BlockDriverState *bs);
57int bdrv_read(BlockDriverState *bs, int64_t sector_num,
58 uint8_t *buf, int nb_sectors);
59int bdrv_write(BlockDriverState *bs, int64_t sector_num,
60 const uint8_t *buf, int nb_sectors);
61void bdrv_get_geometry(BlockDriverState *bs, int64_t *nb_sectors_ptr);
33e3963e 62int bdrv_commit(BlockDriverState *bs);
77fef8c1 63void bdrv_set_boot_sector(BlockDriverState *bs, const uint8_t *data, int size);
33e3963e 64
313aa567
FB
65/* vga.c */
66
4fa0f5d2 67#define VGA_RAM_SIZE (4096 * 1024)
313aa567
FB
68
69typedef struct DisplayState {
70 uint8_t *data;
71 int linesize;
72 int depth;
73 void (*dpy_update)(struct DisplayState *s, int x, int y, int w, int h);
74 void (*dpy_resize)(struct DisplayState *s, int w, int h);
75 void (*dpy_refresh)(struct DisplayState *s);
76} DisplayState;
77
78static inline void dpy_update(DisplayState *s, int x, int y, int w, int h)
79{
80 s->dpy_update(s, x, y, w, h);
81}
82
83static inline void dpy_resize(DisplayState *s, int w, int h)
84{
85 s->dpy_resize(s, w, h);
86}
87
7138fcfb
FB
88int vga_initialize(DisplayState *ds, uint8_t *vga_ram_base,
89 unsigned long vga_ram_offset, int vga_ram_size);
313aa567
FB
90void vga_update_display(void);
91
92/* sdl.c */
93void sdl_display_init(DisplayState *ds);
94
5391d806
FB
95/* ide.c */
96#define MAX_DISKS 4
97
98extern BlockDriverState *bs_table[MAX_DISKS];
99
100void ide_init(void);
101void ide_set_geometry(int n, int cyls, int heads, int secs);
102void ide_set_cdrom(int n, int is_cdrom);
103
27503323
FB
104/* oss.c */
105typedef enum {
106 AUD_FMT_U8,
107 AUD_FMT_S8,
108 AUD_FMT_U16,
109 AUD_FMT_S16
110} audfmt_e;
111
112void AUD_open (int rfreq, int rnchannels, audfmt_e rfmt);
113void AUD_reset (int rfreq, int rnchannels, audfmt_e rfmt);
114int AUD_write (void *in_buf, int size);
115void AUD_run (void);
116void AUD_adjust_estimate (int _leftover);
117int AUD_get_free (void);
118int AUD_get_live (void);
119int AUD_get_buffer_size (void);
120void AUD_init (void);
121
122/* dma.c */
16f62432 123typedef int (*DMA_transfer_handler) (void *opaque, target_ulong addr, int size);
27503323
FB
124int DMA_get_channel_mode (int nchan);
125void DMA_hold_DREQ (int nchan);
126void DMA_release_DREQ (int nchan);
16f62432 127void DMA_schedule(int nchan);
27503323
FB
128void DMA_run (void);
129void DMA_init (void);
130void DMA_register_channel (int nchan,
16f62432 131 DMA_transfer_handler transfer_handler, void *opaque);
27503323
FB
132
133/* sb16.c */
134void SB16_run (void);
135void SB16_init (void);
136
7138fcfb
FB
137/* fdc.c */
138#define MAX_FD 2
139extern BlockDriverState *fd_table[MAX_FD];
140
141void cmos_register_fd (uint8_t fd0, uint8_t fd1);
142void fdctrl_init (int irq_lvl, int dma_chann, int mem_mapped, uint32_t base,
143 char boot_device);
144int fdctrl_disk_change (int idx, const unsigned char *filename, int ro);
145
80cabfad
FB
146/* ne2000.c */
147
148#define MAX_ETH_FRAME_SIZE 1514
149
150void ne2000_init(int base, int irq);
151int ne2000_can_receive(void);
152void ne2000_receive(uint8_t *buf, int size);
153
154extern int net_fd;
155
156/* pckbd.c */
157
158void kbd_put_keycode(int keycode);
159
160#define MOUSE_EVENT_LBUTTON 0x01
161#define MOUSE_EVENT_RBUTTON 0x02
162#define MOUSE_EVENT_MBUTTON 0x04
163void kbd_mouse_event(int dx, int dy, int dz, int buttons_state);
164
165void kbd_init(void);
166
167/* mc146818rtc.c */
168
169typedef struct RTCState {
170 uint8_t cmos_data[128];
171 uint8_t cmos_index;
172 int irq;
173} RTCState;
174
175extern RTCState rtc_state;
176
177void rtc_init(int base, int irq);
178void rtc_timer(void);
179
180/* serial.c */
181
182void serial_init(int base, int irq);
183int serial_can_receive(void);
184void serial_receive_byte(int ch);
185void serial_receive_break(void);
186
187/* i8259.c */
188
189void pic_set_irq(int irq, int level);
190void pic_init(void);
191
192/* i8254.c */
193
194#define PIT_FREQ 1193182
195
196typedef struct PITChannelState {
197 int count; /* can be 65536 */
198 uint16_t latched_count;
199 uint8_t rw_state;
200 uint8_t mode;
201 uint8_t bcd; /* not supported */
202 uint8_t gate; /* timer start */
203 int64_t count_load_time;
204 int64_t count_last_edge_check_time;
205} PITChannelState;
206
207extern PITChannelState pit_channels[3];
208
209void pit_init(void);
210void pit_set_gate(PITChannelState *s, int val);
211int pit_get_out(PITChannelState *s);
212int pit_get_out_edges(PITChannelState *s);
213
214/* pc.c */
215void pc_init(int ram_size, int vga_ram_size, int boot_device,
216 DisplayState *ds, const char **fd_filename, int snapshot,
217 const char *kernel_filename, const char *kernel_cmdline,
218 const char *initrd_filename);
219
fc01f7e7 220#endif /* VL_H */