File:  [Qemu by Fabrice Bellard] / qemu / sysemu.h
Revision 1.1.1.6 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 18:34:28 2018 UTC (3 years, 1 month ago) by root
Branches: qemu, MAIN
CVS tags: qemu0150, qemu0141, qemu0140, HEAD
qemu 0.14.0

    1: #ifndef SYSEMU_H
    2: #define SYSEMU_H
    3: /* Misc. things related to the system emulator.  */
    4: 
    5: #include "qemu-common.h"
    6: #include "qemu-option.h"
    7: #include "qemu-queue.h"
    8: #include "qemu-timer.h"
    9: #include "notify.h"
   10: 
   11: #ifdef _WIN32
   12: #include <windows.h>
   13: #include "qemu-os-win32.h"
   14: #endif
   15: 
   16: #ifdef CONFIG_POSIX
   17: #include "qemu-os-posix.h"
   18: #endif
   19: 
   20: /* vl.c */
   21: extern const char *bios_name;
   22: 
   23: #define QEMU_FILE_TYPE_BIOS   0
   24: #define QEMU_FILE_TYPE_KEYMAP 1
   25: char *qemu_find_file(int type, const char *name);
   26: 
   27: extern int vm_running;
   28: extern const char *qemu_name;
   29: extern uint8_t qemu_uuid[];
   30: int qemu_uuid_parse(const char *str, uint8_t *uuid);
   31: #define UUID_FMT "%02hhx%02hhx%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx"
   32: 
   33: typedef struct vm_change_state_entry VMChangeStateEntry;
   34: typedef void VMChangeStateHandler(void *opaque, int running, int reason);
   35: 
   36: VMChangeStateEntry *qemu_add_vm_change_state_handler(VMChangeStateHandler *cb,
   37:                                                      void *opaque);
   38: void qemu_del_vm_change_state_handler(VMChangeStateEntry *e);
   39: 
   40: void vm_start(void);
   41: void vm_stop(int reason);
   42: 
   43: uint64_t ram_bytes_remaining(void);
   44: uint64_t ram_bytes_transferred(void);
   45: uint64_t ram_bytes_total(void);
   46: 
   47: int64_t cpu_get_ticks(void);
   48: void cpu_enable_ticks(void);
   49: void cpu_disable_ticks(void);
   50: 
   51: void qemu_system_reset_request(void);
   52: void qemu_system_shutdown_request(void);
   53: void qemu_system_powerdown_request(void);
   54: int qemu_shutdown_requested(void);
   55: int qemu_reset_requested(void);
   56: int qemu_powerdown_requested(void);
   57: extern qemu_irq qemu_system_powerdown;
   58: void qemu_system_reset(void);
   59: 
   60: void qemu_add_exit_notifier(Notifier *notify);
   61: void qemu_remove_exit_notifier(Notifier *notify);
   62: 
   63: void qemu_add_machine_init_done_notifier(Notifier *notify);
   64: 
   65: void do_savevm(Monitor *mon, const QDict *qdict);
   66: int load_vmstate(const char *name);
   67: void do_delvm(Monitor *mon, const QDict *qdict);
   68: void do_info_snapshots(Monitor *mon);
   69: 
   70: void cpu_synchronize_all_states(void);
   71: void cpu_synchronize_all_post_reset(void);
   72: void cpu_synchronize_all_post_init(void);
   73: 
   74: void qemu_announce_self(void);
   75: 
   76: void main_loop_wait(int nonblocking);
   77: 
   78: bool qemu_savevm_state_blocked(Monitor *mon);
   79: int qemu_savevm_state_begin(Monitor *mon, QEMUFile *f, int blk_enable,
   80:                             int shared);
   81: int qemu_savevm_state_iterate(Monitor *mon, QEMUFile *f);
   82: int qemu_savevm_state_complete(Monitor *mon, QEMUFile *f);
   83: void qemu_savevm_state_cancel(Monitor *mon, QEMUFile *f);
   84: int qemu_loadvm_state(QEMUFile *f);
   85: 
   86: /* SLIRP */
   87: void do_info_slirp(Monitor *mon);
   88: 
   89: /* OS specific functions */
   90: void os_setup_early_signal_handling(void);
   91: char *os_find_datadir(const char *argv0);
   92: void os_parse_cmd_args(int index, const char *optarg);
   93: void os_pidfile_error(void);
   94: 
   95: typedef enum DisplayType
   96: {
   97:     DT_DEFAULT,
   98:     DT_CURSES,
   99:     DT_SDL,
  100:     DT_NOGRAPHIC,
  101: } DisplayType;
  102: 
  103: extern int autostart;
  104: extern int incoming_expected;
  105: extern int bios_size;
  106: 
  107: typedef enum {
  108:     VGA_NONE, VGA_STD, VGA_CIRRUS, VGA_VMWARE, VGA_XENFB, VGA_QXL,
  109: } VGAInterfaceType;
  110: 
  111: extern int vga_interface_type;
  112: #define cirrus_vga_enabled (vga_interface_type == VGA_CIRRUS)
  113: #define std_vga_enabled (vga_interface_type == VGA_STD)
  114: #define xenfb_enabled (vga_interface_type == VGA_XENFB)
  115: #define vmsvga_enabled (vga_interface_type == VGA_VMWARE)
  116: #define qxl_enabled (vga_interface_type == VGA_QXL)
  117: 
  118: extern int graphic_width;
  119: extern int graphic_height;
  120: extern int graphic_depth;
  121: extern uint8_t irq0override;
  122: extern DisplayType display_type;
  123: extern const char *keyboard_layout;
  124: extern int win2k_install_hack;
  125: extern int rtc_td_hack;
  126: extern int alt_grab;
  127: extern int ctrl_grab;
  128: extern int usb_enabled;
  129: extern int smp_cpus;
  130: extern int max_cpus;
  131: extern int cursor_hide;
  132: extern int graphic_rotate;
  133: extern int no_quit;
  134: extern int no_shutdown;
  135: extern int semihosting_enabled;
  136: extern int old_param;
  137: extern int boot_menu;
  138: extern QEMUClock *rtc_clock;
  139: 
  140: #define MAX_NODES 64
  141: extern int nb_numa_nodes;
  142: extern uint64_t node_mem[MAX_NODES];
  143: extern uint64_t node_cpumask[MAX_NODES];
  144: 
  145: #define MAX_OPTION_ROMS 16
  146: typedef struct QEMUOptionRom {
  147:     const char *name;
  148:     int32_t bootindex;
  149: } QEMUOptionRom;
  150: extern QEMUOptionRom option_rom[MAX_OPTION_ROMS];
  151: extern int nb_option_roms;
  152: 
  153: #define MAX_PROM_ENVS 128
  154: extern const char *prom_envs[MAX_PROM_ENVS];
  155: extern unsigned int nb_prom_envs;
  156: 
  157: /* pci-hotplug */
  158: void pci_device_hot_add(Monitor *mon, const QDict *qdict);
  159: void drive_hot_add(Monitor *mon, const QDict *qdict);
  160: void do_pci_device_hot_remove(Monitor *mon, const QDict *qdict);
  161: 
  162: /* pcie aer error injection */
  163: void pcie_aer_inject_error_print(Monitor *mon, const QObject *data);
  164: int do_pcie_aer_inejct_error(Monitor *mon,
  165:                              const QDict *qdict, QObject **ret_data);
  166: 
  167: /* serial ports */
  168: 
  169: #define MAX_SERIAL_PORTS 4
  170: 
  171: extern CharDriverState *serial_hds[MAX_SERIAL_PORTS];
  172: 
  173: /* parallel ports */
  174: 
  175: #define MAX_PARALLEL_PORTS 3
  176: 
  177: extern CharDriverState *parallel_hds[MAX_PARALLEL_PORTS];
  178: 
  179: #define TFR(expr) do { if ((expr) != -1) break; } while (errno == EINTR)
  180: 
  181: void do_usb_add(Monitor *mon, const QDict *qdict);
  182: void do_usb_del(Monitor *mon, const QDict *qdict);
  183: void usb_info(Monitor *mon);
  184: 
  185: void rtc_change_mon_event(struct tm *tm);
  186: 
  187: void register_devices(void);
  188: 
  189: void add_boot_device_path(int32_t bootindex, DeviceState *dev,
  190:                           const char *suffix);
  191: char *get_boot_devices_list(uint32_t *size);
  192: #endif

unix.superglobalmegacorp.com