centralize handling of -icount

A simple patch to place together all handling of -icount.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
Paolo Bonzini 2010-03-10 11:38:48 +01:00 committed by Anthony Liguori
parent 972abbe03b
commit 4e3de9e954
1 changed files with 19 additions and 14 deletions

33
vl.c
View File

@ -701,8 +701,23 @@ static void icount_adjust_vm(void * opaque)
icount_adjust(); icount_adjust();
} }
static void init_icount_adjust(void) static void configure_icount(const char *option)
{ {
if (!option)
return;
if (strcmp(option, "auto") != 0) {
icount_time_shift = strtol(option, NULL, 0);
use_icount = 1;
return;
}
use_icount = 2;
/* 125MIPS seems a reasonable initial guess at the guest speed.
It will be corrected fairly quickly anyway. */
icount_time_shift = 3;
/* Have both realtime and virtual time triggers for speed adjustment. /* Have both realtime and virtual time triggers for speed adjustment.
The realtime trigger catches emulated time passing too slowly, The realtime trigger catches emulated time passing too slowly,
the virtual time trigger catches emulated time passing too fast. the virtual time trigger catches emulated time passing too fast.
@ -4854,6 +4869,7 @@ int main(int argc, char **argv, char **envp)
uint32_t boot_devices_bitmap = 0; uint32_t boot_devices_bitmap = 0;
int i; int i;
int snapshot, linux_boot, net_boot; int snapshot, linux_boot, net_boot;
const char *icount_option = NULL;
const char *initrd_filename; const char *initrd_filename;
const char *kernel_filename, *kernel_cmdline; const char *kernel_filename, *kernel_cmdline;
char boot_devices[33] = "cad"; /* default to HD->floppy->CD-ROM */ char boot_devices[33] = "cad"; /* default to HD->floppy->CD-ROM */
@ -5618,12 +5634,7 @@ int main(int argc, char **argv, char **envp)
tb_size = 0; tb_size = 0;
break; break;
case QEMU_OPTION_icount: case QEMU_OPTION_icount:
use_icount = 1; icount_option = optarg;
if (strcmp(optarg, "auto") == 0) {
icount_time_shift = -1;
} else {
icount_time_shift = strtol(optarg, NULL, 0);
}
break; break;
case QEMU_OPTION_incoming: case QEMU_OPTION_incoming:
incoming = optarg; incoming = optarg;
@ -5870,13 +5881,7 @@ int main(int argc, char **argv, char **envp)
fprintf(stderr, "could not initialize alarm timer\n"); fprintf(stderr, "could not initialize alarm timer\n");
exit(1); exit(1);
} }
if (use_icount && icount_time_shift < 0) { configure_icount(icount_option);
use_icount = 2;
/* 125MIPS seems a reasonable initial guess at the guest speed.
It will be corrected fairly quickly anyway. */
icount_time_shift = 3;
init_icount_adjust();
}
#ifdef _WIN32 #ifdef _WIN32
socket_init(); socket_init();