📄 vl.h
字号:
qemu_put_byte(f, *pv);}static inline void qemu_get_be64s(QEMUFile *f, uint64_t *pv){ *pv = qemu_get_be64(f);}static inline void qemu_get_be32s(QEMUFile *f, uint32_t *pv){ *pv = qemu_get_be32(f);}static inline void qemu_get_be16s(QEMUFile *f, uint16_t *pv){ *pv = qemu_get_be16(f);}static inline void qemu_get_8s(QEMUFile *f, uint8_t *pv){ *pv = qemu_get_byte(f);}#if TARGET_LONG_BITS == 64#define qemu_put_betl qemu_put_be64#define qemu_get_betl qemu_get_be64#define qemu_put_betls qemu_put_be64s#define qemu_get_betls qemu_get_be64s#else#define qemu_put_betl qemu_put_be32#define qemu_get_betl qemu_get_be32#define qemu_put_betls qemu_put_be32s#define qemu_get_betls qemu_get_be32s#endifint64_t qemu_ftell(QEMUFile *f);int64_t qemu_fseek(QEMUFile *f, int64_t pos, int whence);typedef void SaveStateHandler(QEMUFile *f, void *opaque);typedef int LoadStateHandler(QEMUFile *f, void *opaque, int version_id);int register_savevm(const char *idstr, int instance_id, int version_id, SaveStateHandler *save_state, LoadStateHandler *load_state, void *opaque);void qemu_get_timer(QEMUFile *f, QEMUTimer *ts);void qemu_put_timer(QEMUFile *f, QEMUTimer *ts);void cpu_save(QEMUFile *f, void *opaque);int cpu_load(QEMUFile *f, void *opaque, int version_id);void do_savevm(const char *name);void do_loadvm(const char *name);void do_delvm(const char *name);void do_info_snapshots(void);/* bottom halves */typedef void QEMUBHFunc(void *opaque);QEMUBH *qemu_bh_new(QEMUBHFunc *cb, void *opaque);void qemu_bh_schedule(QEMUBH *bh);void qemu_bh_cancel(QEMUBH *bh);void qemu_bh_delete(QEMUBH *bh);int qemu_bh_poll(void);/* block.c */typedef struct BlockDriverState BlockDriverState;typedef struct BlockDriver BlockDriver;extern BlockDriver bdrv_raw;extern BlockDriver bdrv_host_device;extern BlockDriver bdrv_cow;extern BlockDriver bdrv_qcow;extern BlockDriver bdrv_vmdk;extern BlockDriver bdrv_cloop;extern BlockDriver bdrv_dmg;extern BlockDriver bdrv_bochs;extern BlockDriver bdrv_vpc;extern BlockDriver bdrv_vvfat;extern BlockDriver bdrv_qcow2;typedef struct BlockDriverInfo { /* in bytes, 0 if irrelevant */ int cluster_size; /* offset at which the VM state can be saved (0 if not possible) */ int64_t vm_state_offset; } BlockDriverInfo;typedef struct QEMUSnapshotInfo { char id_str[128]; /* unique snapshot id */ /* the following fields are informative. They are not needed for the consistency of the snapshot */ char name[256]; /* user choosen name */ uint32_t vm_state_size; /* VM state info size */ uint32_t date_sec; /* UTC date of the snapshot */ uint32_t date_nsec; uint64_t vm_clock_nsec; /* VM clock relative to boot */} QEMUSnapshotInfo;#define BDRV_O_RDONLY 0x0000#define BDRV_O_RDWR 0x0002#define BDRV_O_ACCESS 0x0003#define BDRV_O_CREAT 0x0004 /* create an empty file */#define BDRV_O_SNAPSHOT 0x0008 /* open the file read only and save writes in a snapshot */#define BDRV_O_FILE 0x0010 /* open as a raw file (do not try to use a disk image format on top of it (default for bdrv_file_open()) */void bdrv_init(void);BlockDriver *bdrv_find_format(const char *format_name);int bdrv_create(BlockDriver *drv, const char *filename, int64_t size_in_sectors, const char *backing_file, int flags);BlockDriverState *bdrv_new(const char *device_name);void bdrv_delete(BlockDriverState *bs);int bdrv_file_open(BlockDriverState **pbs, const char *filename, int flags);int bdrv_open(BlockDriverState *bs, const char *filename, int flags);int bdrv_open2(BlockDriverState *bs, const char *filename, int flags, BlockDriver *drv);void bdrv_close(BlockDriverState *bs);int bdrv_read(BlockDriverState *bs, int64_t sector_num, uint8_t *buf, int nb_sectors);int bdrv_write(BlockDriverState *bs, int64_t sector_num, const uint8_t *buf, int nb_sectors);int bdrv_pread(BlockDriverState *bs, int64_t offset, void *buf, int count);int bdrv_pwrite(BlockDriverState *bs, int64_t offset, const void *buf, int count);int bdrv_truncate(BlockDriverState *bs, int64_t offset);int64_t bdrv_getlength(BlockDriverState *bs);void bdrv_get_geometry(BlockDriverState *bs, int64_t *nb_sectors_ptr);int bdrv_commit(BlockDriverState *bs);void bdrv_set_boot_sector(BlockDriverState *bs, const uint8_t *data, int size);/* async block I/O */typedef struct BlockDriverAIOCB BlockDriverAIOCB;typedef void BlockDriverCompletionFunc(void *opaque, int ret);BlockDriverAIOCB *bdrv_aio_read(BlockDriverState *bs, int64_t sector_num, uint8_t *buf, int nb_sectors, BlockDriverCompletionFunc *cb, void *opaque);BlockDriverAIOCB *bdrv_aio_write(BlockDriverState *bs, int64_t sector_num, const uint8_t *buf, int nb_sectors, BlockDriverCompletionFunc *cb, void *opaque);void bdrv_aio_cancel(BlockDriverAIOCB *acb);void qemu_aio_init(void);void qemu_aio_poll(void);void qemu_aio_flush(void);void qemu_aio_wait_start(void);void qemu_aio_wait(void);void qemu_aio_wait_end(void);/* Ensure contents are flushed to disk. */void bdrv_flush(BlockDriverState *bs);#define BDRV_TYPE_HD 0#define BDRV_TYPE_CDROM 1#define BDRV_TYPE_FLOPPY 2#define BIOS_ATA_TRANSLATION_AUTO 0#define BIOS_ATA_TRANSLATION_NONE 1#define BIOS_ATA_TRANSLATION_LBA 2#define BIOS_ATA_TRANSLATION_LARGE 3#define BIOS_ATA_TRANSLATION_RECHS 4void bdrv_set_geometry_hint(BlockDriverState *bs, int cyls, int heads, int secs);void bdrv_set_type_hint(BlockDriverState *bs, int type);void bdrv_set_translation_hint(BlockDriverState *bs, int translation);void bdrv_get_geometry_hint(BlockDriverState *bs, int *pcyls, int *pheads, int *psecs);int bdrv_get_type_hint(BlockDriverState *bs);int bdrv_get_translation_hint(BlockDriverState *bs);int bdrv_is_removable(BlockDriverState *bs);int bdrv_is_read_only(BlockDriverState *bs);int bdrv_is_inserted(BlockDriverState *bs);int bdrv_media_changed(BlockDriverState *bs);int bdrv_is_locked(BlockDriverState *bs);void bdrv_set_locked(BlockDriverState *bs, int locked);void bdrv_eject(BlockDriverState *bs, int eject_flag);void bdrv_set_change_cb(BlockDriverState *bs, void (*change_cb)(void *opaque), void *opaque);void bdrv_get_format(BlockDriverState *bs, char *buf, int buf_size);void bdrv_info(void);BlockDriverState *bdrv_find(const char *name);void bdrv_iterate(void (*it)(void *opaque, const char *name), void *opaque);int bdrv_is_encrypted(BlockDriverState *bs);int bdrv_set_key(BlockDriverState *bs, const char *key);void bdrv_iterate_format(void (*it)(void *opaque, const char *name), void *opaque);const char *bdrv_get_device_name(BlockDriverState *bs);int bdrv_write_compressed(BlockDriverState *bs, int64_t sector_num, const uint8_t *buf, int nb_sectors);int bdrv_get_info(BlockDriverState *bs, BlockDriverInfo *bdi);void bdrv_get_backing_filename(BlockDriverState *bs, char *filename, int filename_size);int bdrv_snapshot_create(BlockDriverState *bs, QEMUSnapshotInfo *sn_info);int bdrv_snapshot_goto(BlockDriverState *bs, const char *snapshot_id);int bdrv_snapshot_delete(BlockDriverState *bs, const char *snapshot_id);int bdrv_snapshot_list(BlockDriverState *bs, QEMUSnapshotInfo **psn_info);char *bdrv_snapshot_dump(char *buf, int buf_size, QEMUSnapshotInfo *sn);char *get_human_readable_size(char *buf, int buf_size, int64_t size);int path_is_absolute(const char *path);void path_combine(char *dest, int dest_size, const char *base_path, const char *filename);#ifndef QEMU_TOOLtypedef void QEMUMachineInitFunc(int ram_size, int vga_ram_size, int boot_device, DisplayState *ds, const char **fd_filename, int snapshot, const char *kernel_filename, const char *kernel_cmdline, const char *initrd_filename);typedef struct QEMUMachine { const char *name; const char *desc; QEMUMachineInitFunc *init; struct QEMUMachine *next;} QEMUMachine;int qemu_register_machine(QEMUMachine *m);typedef void SetIRQFunc(void *opaque, int irq_num, int level);typedef void IRQRequestFunc(void *opaque, int level);/* ISA bus */extern target_phys_addr_t isa_mem_base;typedef void (IOPortWriteFunc)(void *opaque, uint32_t address, uint32_t data);typedef uint32_t (IOPortReadFunc)(void *opaque, uint32_t address);int register_ioport_read(int start, int length, int size, IOPortReadFunc *func, void *opaque);int register_ioport_write(int start, int length, int size, IOPortWriteFunc *func, void *opaque);void isa_unassign_ioport(int start, int length);void isa_mmio_init(target_phys_addr_t base, target_phys_addr_t size);/* PCI bus */extern target_phys_addr_t pci_mem_base;typedef struct PCIBus PCIBus;typedef struct PCIDevice PCIDevice;typedef void PCIConfigWriteFunc(PCIDevice *pci_dev, uint32_t address, uint32_t data, int len);typedef uint32_t PCIConfigReadFunc(PCIDevice *pci_dev, uint32_t address, int len);typedef void PCIMapIORegionFunc(PCIDevice *pci_dev, int region_num, uint32_t addr, uint32_t size, int type);#define PCI_ADDRESS_SPACE_MEM 0x00#define PCI_ADDRESS_SPACE_IO 0x01#define PCI_ADDRESS_SPACE_MEM_PREFETCH 0x08typedef struct PCIIORegion { uint32_t addr; /* current PCI mapping address. -1 means not mapped */ uint32_t size; uint8_t type; PCIMapIORegionFunc *map_func;} PCIIORegion;#define PCI_ROM_SLOT 6#define PCI_NUM_REGIONS 7#define PCI_DEVICES_MAX 64#define PCI_VENDOR_ID 0x00 /* 16 bits */#define PCI_DEVICE_ID 0x02 /* 16 bits */#define PCI_COMMAND 0x04 /* 16 bits */#define PCI_COMMAND_IO 0x1 /* Enable response in I/O space */#define PCI_COMMAND_MEMORY 0x2 /* Enable response in Memory space */#define PCI_CLASS_DEVICE 0x0a /* Device class */#define PCI_INTERRUPT_LINE 0x3c /* 8 bits */#define PCI_INTERRUPT_PIN 0x3d /* 8 bits */#define PCI_MIN_GNT 0x3e /* 8 bits */#define PCI_MAX_LAT 0x3f /* 8 bits */struct PCIDevice { /* PCI config space */ uint8_t config[256]; /* the following fields are read only */ PCIBus *bus; int devfn; char name[64]; PCIIORegion io_regions[PCI_NUM_REGIONS]; /* do not access the following fields */ PCIConfigReadFunc *config_read; PCIConfigWriteFunc *config_write; /* ??? This is a PC-specific hack, and should be removed. */ int irq_index; /* Current IRQ levels. Used internally by the generic PCI code. */ int irq_state[4];};PCIDevice *pci_register_device(PCIBus *bus, const char *name, int instance_size, int devfn, PCIConfigReadFunc *config_read, PCIConfigWriteFunc *config_write);void pci_register_io_region(PCIDevice *pci_dev, int region_num, uint32_t size, int type, PCIMapIORegionFunc *map_func);void pci_set_irq(PCIDevice *pci_dev, int irq_num, int level);uint32_t pci_default_read_config(PCIDevice *d, uint32_t address, int len);void pci_default_write_config(PCIDevice *d, uint32_t address, uint32_t val, int len);void pci_device_save(PCIDevice *s, QEMUFile *f);int pci_device_load(PCIDevice *s, QEMUFile *f);typedef void (*pci_set_irq_fn)(void *pic, int irq_num, int level);typedef int (*pci_map_irq_fn)(PCIDevice *pci_dev, int irq_num);PCIBus *pci_register_bus(pci_set_irq_fn set_irq, pci_map_irq_fn map_irq, void *pic, int devfn_min, int nirq);void pci_nic_init(PCIBus *bus, NICInfo *nd, int devfn);void pci_data_write(void *opaque, uint32_t addr, uint32_t val, int len);uint32_t pci_data_read(void *opaque, uint32_t addr, int len);int pci_bus_num(PCIBus *s);void pci_for_each_device(int bus_num, void (*fn)(PCIDevice *d));void pci_info(void);PCIBus *pci_bridge_init(PCIBus *bus, int devfn, uint32_t id, pci_map_irq_fn map_irq, const char *name);/* prep_pci.c */PCIBus *pci_prep_init(void);/* grackle_pci.c */PCIBus *pci_grackle_init(uint32_t base, void *pic);/* unin_pci.c */PCIBus *pci_pmac_init(void *pic);/* apb_pci.c */PCIBus *pci_apb_init(target_ulong special_base, target_ulong mem_base, void *pic);PCIBus *pci_vpb_init(void *pic, int irq, int realview);/* piix_pci.c */PCIBus *i440fx_init(PCIDevice **pi440fx_state);void i440fx_set_smm(PCIDevice *d, int val);int piix3_init(PCIBus *bus, int devfn);void i440fx_init_memory_mappings(PCIDevice *d);int piix4_init(PCIBus *bus, int devfn);/* openpic.c */typedef struct openpic_t openpic_t;void openpic_set_irq(void *opaque, int n_IRQ, int level);openpic_t *openpic_init (PCIBus *bus, int *pmem_index, int nb_cpus, CPUState **envp);/* heathrow_pic.c */typedef struct HeathrowPICS HeathrowPICS;void heathrow_pic_set_irq(void *opaque, int num, int level);HeathrowPICS *heathrow_pic_init(int *pmem_index);/* gt64xxx.c */PCIBus *pci_gt64120_init(void *pic);#ifdef HAS_AUDIOstruct soundhw { const char *name; const char *descr; int enabled; int isa; union { int (*init_isa) (AudioState *s); int (*init_pci) (PCIBus *bus, AudioState *s); } init;};extern struct soundhw soundhw[];#endif/* vga.c */#define VGA_RAM_SIZE (8192 * 1024)struct DisplayState { uint8_t *data; int linesize; int depth; int bgr; /* BGR color order instead of RGB. Only valid for depth == 32 */ int width; int height; void *opaque; void (*dpy_update)(struct DisplayState *s, int x, int y, int w, int h); void (*dpy_resize)(struct DisplayState *s, int w, int h); void (*dpy_refresh)(struct DisplayState *s); void (*dpy_copy)(struct DisplayState *s, int src_x, int src_y, int dst_x, int dst_y, int w, int h);};static inline void dpy_update(DisplayState *s, int x, int y, int w, int h){ s->dpy_update(s, x, y, w, h);}static inline void dpy_resize(DisplayState *s, int w, int h){ s->dpy_resize(s, w, h);}int isa_vga_init(DisplayState *ds, uint8_t *vga_ram_base, unsigned long vga_ram_offset, int vga_ram_size);int pci_vga_init(PCIBus *bus, DisplayState *ds, uint8_t *vga_ram_base, unsigned long vga_ram_offset, int vga_ram_size, unsigned long vga_bios_offset, int vga_bios_size);/* cirrus_vga.c */void pci_cirrus_vga_init(PCIBus *bus, DisplayState *ds, uint8_t *vga_ram_base, unsigned long vga_ram_offset, int vga_ram_size);void isa_cirrus_vga_init(DisplayState *ds, uint8_t *vga_ram_base, unsigned long vga_ram_offset, int vga_ram_size);/* sdl.c */void sdl_display_init(DisplayState *ds, int full_screen);/* cocoa.m */void cocoa_display_init(DisplayState *ds, int full_screen);/* vnc.c */void vnc_display_init(DisplayState *ds, const char *display);void do_info_vnc(void);/* x_keymap.c */extern uint8_t _translate_keycode(const int key);/* ide.c */#define MAX_DISKS 4extern BlockDriverState *bs_table[MAX_DISKS + 1];void isa_ide_init(int iobase, int iobase2, int irq, BlockDriverState *hd0, BlockDriverState *hd1);void pci_cmd646_ide_init(PCIBus *bus, BlockDriverState **hd_table, int secondary_ide_enabled);void pci_piix3_ide_init(PCIBus *bus, BlockDriverState **hd_table, int devfn);int pmac_ide_init (BlockDriverState **hd_table, SetIRQFunc *set_irq, void *irq_opaque, int irq);/* cdrom.c */int cdrom_read_toc(int nb_sectors, uint8_t *buf, int msf, int start_track);int cdrom_read_toc_raw(int nb_sectors, uint8_t *buf, int msf, int session_num);/* es1370.c */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -