aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerd Hoffmann <kraxel@redhat.com>2009-12-08 13:11:36 +0100
committerAnthony Liguori <aliguori@us.ibm.com>2009-12-12 08:17:29 -0600
commitd1d6963ebaf7b934e36d4ddd9c13f8afddb67268 (patch)
tree5e7a068c8ac84924cb723dc38e1036f32e08785f
parent7058b807cd43b639d9ac1058959dc83f5ce54f4f (diff)
chardev: make chardevs specified in config file work.
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> (cherry picked from commit 1a688d3bbc2a44bfefa3f6774a11b0385dafc029)
-rw-r--r--vl.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/vl.c b/vl.c
index f7acdd42cb..aa678ad380 100644
--- 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;