diff options
Diffstat (limited to 'vl.c')
-rw-r--r-- | vl.c | 432 |
1 files changed, 33 insertions, 399 deletions
@@ -3937,191 +3937,18 @@ static int main_loop(void) static void help(int exitcode) { - /* Please keep in synch with QEMU_OPTION_ enums, qemu_options[] - and qemu-doc.texi */ printf("QEMU PC emulator version " QEMU_VERSION ", Copyright (c) 2003-2008 Fabrice Bellard\n" "usage: %s [options] [disk_image]\n" "\n" "'disk_image' is a raw hard image image for IDE hard disk 0\n" "\n" - "Standard options:\n" - "-h or -help display this help and exit\n" - "-M machine select emulated machine (-M ? for list)\n" - "-cpu cpu select CPU (-cpu ? for list)\n" - "-smp n set the number of CPUs to 'n' [default=1]\n" - "-fda/-fdb file use 'file' as floppy disk 0/1 image\n" - "-hda/-hdb file use 'file' as IDE hard disk 0/1 image\n" - "-hdc/-hdd file use 'file' as IDE hard disk 2/3 image\n" - "-cdrom file use 'file' as IDE cdrom image (cdrom is ide1 master)\n" - "-drive [file=file][,if=type][,bus=n][,unit=m][,media=d][,index=i]\n" - " [,cyls=c,heads=h,secs=s[,trans=t]][,snapshot=on|off]\n" - " [,cache=writethrough|writeback|none][,format=f][,serial=s]\n" - " use 'file' as a drive image\n" - "-mtdblock file use 'file' as on-board Flash memory image\n" - "-sd file use 'file' as SecureDigital card image\n" - "-pflash file use 'file' as a parallel flash image\n" - "-boot [a|c|d|n] boot on floppy (a), hard disk (c), CD-ROM (d), or network (n)\n" - "-snapshot write to temporary files instead of disk image files\n" - "-m megs set virtual RAM size to megs MB [default=%d]\n" -#ifndef _WIN32 - "-k language use keyboard layout (for example \"fr\" for French)\n" -#endif -#ifdef HAS_AUDIO - "-audio-help print list of audio drivers and their options\n" - "-soundhw c1,... enable audio support\n" - " and only specified sound cards (comma separated list)\n" - " use -soundhw ? to get the list of supported cards\n" - " use -soundhw all to enable all of them\n" -#endif - "-usb enable the USB driver (will be the default soon)\n" - "-usbdevice name add the host or guest USB device 'name'\n" - "-name string set the name of the guest\n" - "-uuid %%08x-%%04x-%%04x-%%04x-%%012x\n" - " specify machine UUID\n" - "\n" - "Display options:\n" - "-nographic disable graphical output and redirect serial I/Os to console\n" -#ifdef CONFIG_CURSES - "-curses use a curses/ncurses interface instead of SDL\n" -#endif -#ifdef CONFIG_SDL - "-no-frame open SDL window without a frame and window decorations\n" - "-alt-grab use Ctrl-Alt-Shift to grab mouse (instead of Ctrl-Alt)\n" - "-no-quit disable SDL window close capability\n" - "-sdl enable SDL\n" -#endif - "-portrait rotate graphical output 90 deg left (only PXA LCD)\n" - "-vga [std|cirrus|vmware|none]\n" - " select video card type\n" - "-full-screen start in full screen\n" -#if defined(TARGET_PPC) || defined(TARGET_SPARC) - "-g WxH[xDEPTH] Set the initial graphical resolution and depth\n" -#endif - "-vnc display start a VNC server on display\n" - "\n" - "Network options:\n" - "-net nic[,vlan=n][,macaddr=addr][,model=type][,name=str]\n" - " create a new Network Interface Card and connect it to VLAN 'n'\n" -#ifdef CONFIG_SLIRP - "-net user[,vlan=n][,name=str][,hostname=host]\n" - " connect the user mode network stack to VLAN 'n' and send\n" - " hostname 'host' to DHCP clients\n" -#endif -#ifdef _WIN32 - "-net tap[,vlan=n][,name=str],ifname=name\n" - " connect the host TAP network interface to VLAN 'n'\n" -#else - "-net tap[,vlan=n][,name=str][,fd=h][,ifname=name][,script=file][,downscript=dfile]\n" - " connect the host TAP network interface to VLAN 'n' and use the\n" - " network scripts 'file' (default=%s)\n" - " and 'dfile' (default=%s);\n" - " use '[down]script=no' to disable script execution;\n" - " use 'fd=h' to connect to an already opened TAP interface\n" -#endif - "-net socket[,vlan=n][,name=str][,fd=h][,listen=[host]:port][,connect=host:port]\n" - " connect the vlan 'n' to another VLAN using a socket connection\n" - "-net socket[,vlan=n][,name=str][,fd=h][,mcast=maddr:port]\n" - " connect the vlan 'n' to multicast maddr and port\n" -#ifdef CONFIG_VDE - "-net vde[,vlan=n][,name=str][,sock=socketpath][,port=n][,group=groupname][,mode=octalmode]\n" - " connect the vlan 'n' to port 'n' of a vde switch running\n" - " on host and listening for incoming connections on 'socketpath'.\n" - " Use group 'groupname' and mode 'octalmode' to change default\n" - " ownership and permissions for communication port.\n" -#endif - "-net none use it alone to have zero network devices; if no -net option\n" - " is provided, the default is '-net nic -net user'\n" -#ifdef CONFIG_SLIRP - "-tftp dir allow tftp access to files in dir [-net user]\n" - "-bootp file advertise file in BOOTP replies\n" -#ifndef _WIN32 - "-smb dir allow SMB access to files in 'dir' [-net user]\n" -#endif - "-redir [tcp|udp]:host-port:[guest-host]:guest-port\n" - " redirect TCP or UDP connections from host to guest [-net user]\n" -#endif - "\n" - "-bt hci,null dumb bluetooth HCI - doesn't respond to commands\n" - "-bt hci,host[:id]\n" - " use host's HCI with the given name\n" - "-bt hci[,vlan=n]\n" - " emulate a standard HCI in virtual scatternet 'n'\n" - "-bt vhci[,vlan=n]\n" - " add host computer to virtual scatternet 'n' using VHCI\n" - "-bt device:dev[,vlan=n]\n" - " emulate a bluetooth device 'dev' in scatternet 'n'\n" - "\n" -#ifdef TARGET_I386 - "\n" - "i386 target only:\n" - "-win2k-hack use it when installing Windows 2000 to avoid a disk full bug\n" - "-rtc-td-hack use it to fix time drift in Windows ACPI HAL\n" - "-no-fd-bootchk disable boot signature checking for floppy disks\n" - "-no-acpi disable ACPI\n" - "-no-hpet disable HPET\n" - "-acpitable [sig=str][,rev=n][,oem_id=str][,oem_table_id=str][,oem_rev=n][,asl_compiler_id=str][,asl_compiler_rev=n][,data=file1[:file2]...]\n" - " ACPI table description\n" -#endif - "Linux boot specific:\n" - "-kernel bzImage use 'bzImage' as kernel image\n" - "-append cmdline use 'cmdline' as kernel command line\n" - "-initrd file use 'file' as initial ram disk\n" - "\n" - "Debug/Expert options:\n" - "-serial dev redirect the serial port to char device 'dev'\n" - "-parallel dev redirect the parallel port to char device 'dev'\n" - "-monitor dev redirect the monitor to char device 'dev'\n" - "-pidfile file write PID to 'file'\n" - "-S freeze CPU at startup (use 'c' to start execution)\n" - "-s wait gdb connection to port\n" - "-p port set gdb connection port [default=%s]\n" - "-d item1,... output log to %s (use -d ? for a list of log items)\n" - "-hdachs c,h,s[,t]\n" - " force hard disk 0 physical geometry and the optional BIOS\n" - " translation (t=none or lba) (usually qemu can guess them)\n" - "-L path set the directory for the BIOS, VGA BIOS and keymaps\n" - "-bios file set the filename for the BIOS\n" -#ifdef USE_KQEMU - "-kernel-kqemu enable KQEMU full virtualization (default is user mode only)\n" - "-no-kqemu disable KQEMU kernel module usage\n" -#endif -#ifdef CONFIG_KVM - "-enable-kvm enable KVM full virtualization support\n" -#endif - "-no-reboot exit instead of rebooting\n" - "-no-shutdown stop before shutdown\n" - "-loadvm [tag|id]\n" - " start right away with a saved state (loadvm in monitor)\n" -#ifndef _WIN32 - "-daemonize daemonize QEMU after initializing\n" -#endif - "-option-rom rom load a file, rom, into the option ROM space\n" -#if defined(TARGET_SPARC) || defined(TARGET_PPC) - "-prom-env variable=value\n" - " set OpenBIOS nvram variables\n" -#endif - "-clock force the use of the given methods for timer alarm.\n" - " To see what timers are available use -clock ?\n" - "-localtime set the real time clock to local time [default=utc]\n" - "-startdate select initial date of the clock\n" - "-icount [N|auto]\n" - " enable virtual instruction counter with 2^N clock ticks per instruction\n" - "-echr chr set terminal escape character instead of ctrl-a\n" - "-virtioconsole c\n" - " set virtio console\n" - "-show-cursor show cursor\n" -#if defined(TARGET_ARM) || defined(TARGET_M68K) - "-semihosting semihosting mode\n" -#endif -#if defined(TARGET_ARM) - "-old-param old param mode\n" -#endif - "-tb-size n set TB size\n" - "-incoming p prepare for incoming migration, listen on port p\n" -#ifndef _WIN32 - "-chroot dir Chroot to dir just before starting the VM.\n" - "-runas user Change to user id user just before starting the VM.\n" -#endif +#define DEF(option, opt_arg, opt_enum, opt_help) \ + opt_help +#define DEFHEADING(text) stringify(text) "\n" +#include "qemu-options.h" +#undef DEF +#undef DEFHEADING +#undef GEN_DOCS "\n" "During emulation, the following keys are useful:\n" "ctrl-alt-f toggle full screen\n" @@ -4144,103 +3971,13 @@ static void help(int exitcode) #define HAS_ARG 0x0001 enum { - /* Please keep in synch with help, qemu_options[] and - qemu-doc.texi */ - /* Standard options: */ - QEMU_OPTION_h, - QEMU_OPTION_M, - QEMU_OPTION_cpu, - QEMU_OPTION_smp, - QEMU_OPTION_fda, - QEMU_OPTION_fdb, - QEMU_OPTION_hda, - QEMU_OPTION_hdb, - QEMU_OPTION_hdc, - QEMU_OPTION_hdd, - QEMU_OPTION_cdrom, - QEMU_OPTION_drive, - QEMU_OPTION_mtdblock, - QEMU_OPTION_sd, - QEMU_OPTION_pflash, - QEMU_OPTION_boot, - QEMU_OPTION_snapshot, - QEMU_OPTION_m, - QEMU_OPTION_k, - QEMU_OPTION_audio_help, - QEMU_OPTION_soundhw, - QEMU_OPTION_usb, - QEMU_OPTION_usbdevice, - QEMU_OPTION_name, - QEMU_OPTION_uuid, - - /* Display options: */ - QEMU_OPTION_nographic, - QEMU_OPTION_curses, - QEMU_OPTION_no_frame, - QEMU_OPTION_alt_grab, - QEMU_OPTION_no_quit, - QEMU_OPTION_sdl, - QEMU_OPTION_portrait, - QEMU_OPTION_vga, - QEMU_OPTION_full_screen, - QEMU_OPTION_g, - QEMU_OPTION_vnc, - - /* Network options: */ - QEMU_OPTION_net, - QEMU_OPTION_tftp, - QEMU_OPTION_bootp, - QEMU_OPTION_smb, - QEMU_OPTION_redir, - QEMU_OPTION_bt, - - /* i386 target only: */ - QEMU_OPTION_win2k_hack, - QEMU_OPTION_rtc_td_hack, - QEMU_OPTION_no_fd_bootchk, - QEMU_OPTION_no_acpi, - QEMU_OPTION_no_hpet, - QEMU_OPTION_acpitable, - - /* Linux boot specific: */ - QEMU_OPTION_kernel, - QEMU_OPTION_append, - QEMU_OPTION_initrd, - - /* Debug/Expert options: */ - QEMU_OPTION_serial, - QEMU_OPTION_parallel, - QEMU_OPTION_monitor, - QEMU_OPTION_pidfile, - QEMU_OPTION_S, - QEMU_OPTION_s, - QEMU_OPTION_p, - QEMU_OPTION_d, - QEMU_OPTION_hdachs, - QEMU_OPTION_L, - QEMU_OPTION_bios, - QEMU_OPTION_kernel_kqemu, - QEMU_OPTION_no_kqemu, - QEMU_OPTION_enable_kvm, - QEMU_OPTION_no_reboot, - QEMU_OPTION_no_shutdown, - QEMU_OPTION_loadvm, - QEMU_OPTION_daemonize, - QEMU_OPTION_option_rom, - QEMU_OPTION_prom_env, - QEMU_OPTION_clock, - QEMU_OPTION_localtime, - QEMU_OPTION_startdate, - QEMU_OPTION_icount, - QEMU_OPTION_echr, - QEMU_OPTION_virtiocon, - QEMU_OPTION_show_cursor, - QEMU_OPTION_semihosting, - QEMU_OPTION_old_param, - QEMU_OPTION_tb_size, - QEMU_OPTION_incoming, - QEMU_OPTION_chroot, - QEMU_OPTION_runas, +#define DEF(option, opt_arg, opt_enum, opt_help) \ + opt_enum, +#define DEFHEADING(text) +#include "qemu-options.h" +#undef DEF +#undef DEFHEADING +#undef GEN_DOCS }; typedef struct QEMUOption { @@ -4250,129 +3987,14 @@ typedef struct QEMUOption { } QEMUOption; static const QEMUOption qemu_options[] = { - /* Please keep in synch with help, QEMU_OPTION_ enums, and - qemu-doc.texi */ - /* Standard options: */ { "h", 0, QEMU_OPTION_h }, - { "help", 0, QEMU_OPTION_h }, - { "M", HAS_ARG, QEMU_OPTION_M }, - { "cpu", HAS_ARG, QEMU_OPTION_cpu }, - { "smp", HAS_ARG, QEMU_OPTION_smp }, - { "fda", HAS_ARG, QEMU_OPTION_fda }, - { "fdb", HAS_ARG, QEMU_OPTION_fdb }, - { "hda", HAS_ARG, QEMU_OPTION_hda }, - { "hdb", HAS_ARG, QEMU_OPTION_hdb }, - { "hdc", HAS_ARG, QEMU_OPTION_hdc }, - { "hdd", HAS_ARG, QEMU_OPTION_hdd }, - { "cdrom", HAS_ARG, QEMU_OPTION_cdrom }, - { "drive", HAS_ARG, QEMU_OPTION_drive }, - { "mtdblock", HAS_ARG, QEMU_OPTION_mtdblock }, - { "sd", HAS_ARG, QEMU_OPTION_sd }, - { "pflash", HAS_ARG, QEMU_OPTION_pflash }, - { "boot", HAS_ARG, QEMU_OPTION_boot }, - { "snapshot", 0, QEMU_OPTION_snapshot }, - { "m", HAS_ARG, QEMU_OPTION_m }, -#ifndef _WIN32 - { "k", HAS_ARG, QEMU_OPTION_k }, -#endif -#ifdef HAS_AUDIO - { "audio-help", 0, QEMU_OPTION_audio_help }, - { "soundhw", HAS_ARG, QEMU_OPTION_soundhw }, -#endif - { "usb", 0, QEMU_OPTION_usb }, - { "usbdevice", HAS_ARG, QEMU_OPTION_usbdevice }, - { "name", HAS_ARG, QEMU_OPTION_name }, - { "uuid", HAS_ARG, QEMU_OPTION_uuid }, - - /* Display options: */ - { "nographic", 0, QEMU_OPTION_nographic }, -#ifdef CONFIG_CURSES - { "curses", 0, QEMU_OPTION_curses }, -#endif -#ifdef CONFIG_SDL - { "no-frame", 0, QEMU_OPTION_no_frame }, - { "alt-grab", 0, QEMU_OPTION_alt_grab }, - { "no-quit", 0, QEMU_OPTION_no_quit }, - { "sdl", 0, QEMU_OPTION_sdl }, -#endif - { "portrait", 0, QEMU_OPTION_portrait }, - { "vga", HAS_ARG, QEMU_OPTION_vga }, - { "full-screen", 0, QEMU_OPTION_full_screen }, -#if defined(TARGET_PPC) || defined(TARGET_SPARC) - { "g", 1, QEMU_OPTION_g }, -#endif - { "vnc", HAS_ARG, QEMU_OPTION_vnc }, - - /* Network options: */ - { "net", HAS_ARG, QEMU_OPTION_net}, -#ifdef CONFIG_SLIRP - { "tftp", HAS_ARG, QEMU_OPTION_tftp }, - { "bootp", HAS_ARG, QEMU_OPTION_bootp }, -#ifndef _WIN32 - { "smb", HAS_ARG, QEMU_OPTION_smb }, -#endif - { "redir", HAS_ARG, QEMU_OPTION_redir }, -#endif - { "bt", HAS_ARG, QEMU_OPTION_bt }, -#ifdef TARGET_I386 - /* i386 target only: */ - { "win2k-hack", 0, QEMU_OPTION_win2k_hack }, - { "rtc-td-hack", 0, QEMU_OPTION_rtc_td_hack }, - { "no-fd-bootchk", 0, QEMU_OPTION_no_fd_bootchk }, - { "no-acpi", 0, QEMU_OPTION_no_acpi }, - { "no-hpet", 0, QEMU_OPTION_no_hpet }, - { "acpitable", HAS_ARG, QEMU_OPTION_acpitable }, -#endif - - /* Linux boot specific: */ - { "kernel", HAS_ARG, QEMU_OPTION_kernel }, - { "append", HAS_ARG, QEMU_OPTION_append }, - { "initrd", HAS_ARG, QEMU_OPTION_initrd }, - - /* Debug/Expert options: */ - { "serial", HAS_ARG, QEMU_OPTION_serial }, - { "parallel", HAS_ARG, QEMU_OPTION_parallel }, - { "monitor", HAS_ARG, QEMU_OPTION_monitor }, - { "pidfile", HAS_ARG, QEMU_OPTION_pidfile }, - { "S", 0, QEMU_OPTION_S }, - { "s", 0, QEMU_OPTION_s }, - { "p", HAS_ARG, QEMU_OPTION_p }, - { "d", HAS_ARG, QEMU_OPTION_d }, - { "hdachs", HAS_ARG, QEMU_OPTION_hdachs }, - { "L", HAS_ARG, QEMU_OPTION_L }, - { "bios", HAS_ARG, QEMU_OPTION_bios }, -#ifdef USE_KQEMU - { "kernel-kqemu", 0, QEMU_OPTION_kernel_kqemu }, - { "no-kqemu", 0, QEMU_OPTION_no_kqemu }, -#endif -#ifdef CONFIG_KVM - { "enable-kvm", 0, QEMU_OPTION_enable_kvm }, -#endif - { "no-reboot", 0, QEMU_OPTION_no_reboot }, - { "no-shutdown", 0, QEMU_OPTION_no_shutdown }, - { "loadvm", HAS_ARG, QEMU_OPTION_loadvm }, - { "daemonize", 0, QEMU_OPTION_daemonize }, - { "option-rom", HAS_ARG, QEMU_OPTION_option_rom }, -#if defined(TARGET_SPARC) || defined(TARGET_PPC) - { "prom-env", HAS_ARG, QEMU_OPTION_prom_env }, -#endif - { "clock", HAS_ARG, QEMU_OPTION_clock }, - { "localtime", 0, QEMU_OPTION_localtime }, - { "startdate", HAS_ARG, QEMU_OPTION_startdate }, - { "icount", HAS_ARG, QEMU_OPTION_icount }, - { "echr", HAS_ARG, QEMU_OPTION_echr }, - { "virtioconsole", HAS_ARG, QEMU_OPTION_virtiocon }, - { "show-cursor", 0, QEMU_OPTION_show_cursor }, -#if defined(TARGET_ARM) || defined(TARGET_M68K) - { "semihosting", 0, QEMU_OPTION_semihosting }, -#endif -#if defined(TARGET_ARM) - { "old-param", 0, QEMU_OPTION_old_param }, -#endif - { "tb-size", HAS_ARG, QEMU_OPTION_tb_size }, - { "incoming", HAS_ARG, QEMU_OPTION_incoming }, - { "chroot", HAS_ARG, QEMU_OPTION_chroot }, - { "runas", HAS_ARG, QEMU_OPTION_runas }, +#define DEF(option, opt_arg, opt_enum, opt_help) \ + { option, opt_arg, opt_enum }, +#define DEFHEADING(text) +#include "qemu-options.h" +#undef DEF +#undef DEFHEADING +#undef GEN_DOCS { NULL }, }; @@ -5038,15 +4660,18 @@ int main(int argc, char **argv, char **envp) case QEMU_OPTION_S: autostart = 0; break; +#ifndef _WIN32 case QEMU_OPTION_k: keyboard_layout = optarg; break; +#endif case QEMU_OPTION_localtime: rtc_utc = 0; break; case QEMU_OPTION_vga: select_vgahw (optarg); break; +#if defined(TARGET_PPC) || defined(TARGET_SPARC) case QEMU_OPTION_g: { const char *p; @@ -5081,6 +4706,7 @@ int main(int argc, char **argv, char **envp) graphic_depth = depth; } break; +#endif case QEMU_OPTION_echr: { char *r; @@ -5191,12 +4817,14 @@ int main(int argc, char **argv, char **envp) case QEMU_OPTION_vnc: vnc_display = optarg; break; +#ifdef TARGET_I386 case QEMU_OPTION_no_acpi: acpi_enabled = 0; break; case QEMU_OPTION_no_hpet: no_hpet = 1; break; +#endif case QEMU_OPTION_no_reboot: no_reboot = 1; break; @@ -5213,9 +4841,11 @@ int main(int argc, char **argv, char **envp) exit(1); } break; +#ifndef _WIN32 case QEMU_OPTION_daemonize: daemonize = 1; break; +#endif case QEMU_OPTION_option_rom: if (nb_option_roms >= MAX_OPTION_ROMS) { fprintf(stderr, "Too many option ROMs\n"); @@ -5224,9 +4854,11 @@ int main(int argc, char **argv, char **envp) option_rom[nb_option_roms] = optarg; nb_option_roms++; break; +#if defined(TARGET_ARM) || defined(TARGET_M68K) case QEMU_OPTION_semihosting: semihosting_enabled = 1; break; +#endif case QEMU_OPTION_name: qemu_name = optarg; break; @@ -5302,12 +4934,14 @@ int main(int argc, char **argv, char **envp) case QEMU_OPTION_incoming: incoming = optarg; break; +#ifndef _WIN32 case QEMU_OPTION_chroot: chroot_dir = optarg; break; case QEMU_OPTION_runas: run_as = optarg; break; +#endif } } } |