convert windows console chardev to QemuOpts.
[qemu] / vl.c
diff --git a/vl.c b/vl.c
index c6c6a6b..0446769 100644 (file)
--- a/vl.c
+++ b/vl.c
@@ -3683,12 +3683,10 @@ static void *kvm_cpu_thread_fn(void *arg)
     while (!qemu_system_ready)
         qemu_cond_timedwait(&qemu_system_cond, &qemu_global_mutex, 100);
 
-    cpu_synchronize_state(env);
-
     while (1) {
-        qemu_wait_io_event(env);
         if (cpu_can_run(env))
             qemu_cpu_exec(env);
+        qemu_wait_io_event(env);
     }
 
     return NULL;
@@ -3713,9 +3711,6 @@ static void *tcg_cpu_thread_fn(void *arg)
     while (!qemu_system_ready)
         qemu_cond_timedwait(&qemu_system_cond, &qemu_global_mutex, 100);
 
-    for (env = first_cpu; env != NULL; env = env->next_cpu) {
-        cpu_synchronize_state(env);
-    }
     while (1) {
         tcg_cpu_exec();
         qemu_wait_io_event(cur_cpu);
@@ -5286,6 +5281,16 @@ int main(int argc, char **argv, char **envp)
                 monitor_devices[monitor_device_index] = optarg;
                 monitor_device_index++;
                 break;
+            case QEMU_OPTION_chardev:
+                opts = qemu_opts_parse(&qemu_chardev_opts, optarg, "backend");
+                if (!opts) {
+                    fprintf(stderr, "parse error: %s\n", optarg);
+                    exit(1);
+                }
+                if (NULL == qemu_chr_open_opts(opts, NULL)) {
+                    exit(1);
+                }
+                break;
             case QEMU_OPTION_serial:
                 if (serial_device_index >= MAX_SERIAL_PORTS) {
                     fprintf(stderr, "qemu: too many serial ports\n");