From 4e3de9e954b2674543b3b5c99890c20a7f324a9d Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Wed, 10 Mar 2010 11:38:48 +0100 Subject: [PATCH] centralize handling of -icount A simple patch to place together all handling of -icount. Signed-off-by: Paolo Bonzini Signed-off-by: Anthony Liguori --- vl.c | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/vl.c b/vl.c index a9edff6ff3..7938328564 100644 --- a/vl.c +++ b/vl.c @@ -701,8 +701,23 @@ static void icount_adjust_vm(void * opaque) 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. The realtime trigger catches emulated time passing too slowly, 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; int i; int snapshot, linux_boot, net_boot; + const char *icount_option = NULL; const char *initrd_filename; const char *kernel_filename, *kernel_cmdline; 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; break; case QEMU_OPTION_icount: - use_icount = 1; - if (strcmp(optarg, "auto") == 0) { - icount_time_shift = -1; - } else { - icount_time_shift = strtol(optarg, NULL, 0); - } + icount_option = optarg; break; case QEMU_OPTION_incoming: incoming = optarg; @@ -5870,13 +5881,7 @@ int main(int argc, char **argv, char **envp) fprintf(stderr, "could not initialize alarm timer\n"); exit(1); } - if (use_icount && icount_time_shift < 0) { - 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(); - } + configure_icount(icount_option); #ifdef _WIN32 socket_init();