OSDN Git Service

chardev: make chardevs specified in config file work.
authorGerd Hoffmann <kraxel@redhat.com>
Tue, 8 Dec 2009 12:11:36 +0000 (13:11 +0100)
committerAnthony Liguori <aliguori@us.ibm.com>
Sat, 12 Dec 2009 13:59:41 +0000 (07:59 -0600)
The patch decuples the -chardev switch and the actual chardev
initialization.  Without this patch qemu ignores chardev entries
coming via -readconfig.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
vl.c

diff --git a/vl.c b/vl.c
index f7acdd4..aa678ad 100644 (file)
--- a/vl.c
+++ b/vl.c
@@ -4586,6 +4586,16 @@ static int device_init_func(QemuOpts *opts, void *opaque)
     return 0;
 }
 
+static int chardev_init_func(QemuOpts *opts, void *opaque)
+{
+    CharDriverState *chr;
+
+    chr = qemu_chr_open_opts(opts, NULL);
+    if (!chr)
+        return -1;
+    return 0;
+}
+
 struct device_config {
     enum {
         DEV_USB,       /* -usbdevice   */
@@ -5180,9 +5190,6 @@ int main(int argc, char **argv, char **envp)
                     fprintf(stderr, "parse error: %s\n", optarg);
                     exit(1);
                 }
-                if (qemu_chr_open_opts(opts, NULL) == NULL) {
-                    exit(1);
-                }
                 break;
             case QEMU_OPTION_serial:
                 if (serial_device_index >= MAX_SERIAL_PORTS) {
@@ -5501,6 +5508,9 @@ int main(int argc, char **argv, char **envp)
        }
     }
 
+    if (qemu_opts_foreach(&qemu_chardev_opts, chardev_init_func, NULL, 1) != 0)
+        exit(1);
+
 #ifndef _WIN32
     if (daemonize) {
        pid_t pid;