aboutsummaryrefslogtreecommitdiff
path: root/vl.c
diff options
context:
space:
mode:
Diffstat (limited to 'vl.c')
-rw-r--r--vl.c432
1 files changed, 33 insertions, 399 deletions
diff --git a/vl.c b/vl.c
index abc7f5d0e8..1c22d4cb4a 100644
--- a/vl.c
+++ b/vl.c
@@ -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
}
}
}