⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vl.h

📁 qemu性能直逼VMware的仿真器QEMU 的模擬速度約為實機的 25%;約為 Bochs 的 60 倍。Plex86、User-Mode-Linux、VMware 和 Virtual PC 則比
💻 H
📖 第 1 页 / 共 3 页
字号:
    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 + -