[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 18/23] convert mux chardev to QemuOpts.
From: |
Gerd Hoffmann |
Subject: |
[Qemu-devel] [PATCH v2 18/23] convert mux chardev to QemuOpts. |
Date: |
Thu, 10 Sep 2009 10:58:50 +0200 |
new cmd line syntax: you can add mux=1 to any chardev to enable muxing,
then attach it multiple times, like this:
-chardev pty,name=mux,mux=on
Signed-off-by: Gerd Hoffmann <address@hidden>
---
qemu-char.c | 32 +++++++++++++++++++++-----------
1 files changed, 21 insertions(+), 11 deletions(-)
diff --git a/qemu-char.c b/qemu-char.c
index 3240e13..a7e6cf7 100644
--- a/qemu-char.c
+++ b/qemu-char.c
@@ -2230,6 +2230,11 @@ static QemuOpts *qemu_chr_parse_compat(const char
*label, const char *filename)
if (NULL == opts)
return NULL;
+ if (strstart(filename, "mon:", &p)) {
+ filename = p;
+ qemu_opt_set(opts, "mux", "on");
+ }
+
if (strcmp(filename, "null") == 0 ||
strcmp(filename, "pty") == 0 ||
strcmp(filename, "msmouse") == 0 ||
@@ -2378,8 +2383,18 @@ CharDriverState *qemu_chr_open_opts(QemuOpts *opts,
if (!chr->filename)
chr->filename = qemu_strdup(qemu_opt_get(opts, "backend"));
chr->init = init;
- chr->label = qemu_strdup(qemu_opts_id(opts));
TAILQ_INSERT_TAIL(&chardevs, chr, next);
+
+ if (qemu_opt_get_bool(opts, "mux", 0)) {
+ CharDriverState *base = chr;
+ int len = strlen(qemu_opts_id(opts)) + 6;
+ base->label = qemu_malloc(len);
+ snprintf(base->label, len, "%s-base", qemu_opts_id(opts));
+ chr = qemu_chr_open_mux(base);
+ chr->filename = base->filename;
+ TAILQ_INSERT_TAIL(&chardevs, chr, next);
+ }
+ chr->label = qemu_strdup(qemu_opts_id(opts));
return chr;
}
@@ -2391,21 +2406,16 @@ CharDriverState *qemu_chr_open(const char *label, const
char *filename, void (*i
opts = qemu_chr_parse_compat(label, filename);
if (opts) {
- return qemu_chr_open_opts(opts, init);
+ chr = qemu_chr_open_opts(opts, init);
+ if (qemu_opt_get_bool(opts, "mux", 0)) {
+ monitor_init(chr, MONITOR_USE_READLINE);
+ }
+ return chr;
}
if (strstart(filename, "udp:", &p)) {
chr = qemu_chr_open_udp(p);
} else
- if (strstart(filename, "mon:", &p)) {
- chr = qemu_chr_open(label, p, NULL);
- if (chr) {
- chr = qemu_chr_open_mux(chr);
- monitor_init(chr, MONITOR_USE_READLINE);
- } else {
- printf("Unable to open driver: %s\n", p);
- }
- } else
{
chr = NULL;
}
--
1.6.2.5
- [Qemu-devel] [PATCH v2 09/23] sockets: add inet_listen_opts, (continued)
- [Qemu-devel] [PATCH v2 09/23] sockets: add inet_listen_opts, Gerd Hoffmann, 2009/09/10
- [Qemu-devel] [PATCH v2 15/23] convert windows console chardev to QemuOpts., Gerd Hoffmann, 2009/09/10
- [Qemu-devel] [PATCH v2 21/23] qdev: add parser for chardev properties, Gerd Hoffmann, 2009/09/10
- [Qemu-devel] [PATCH v2 17/23] convert vc chardev to QemuOpts., Gerd Hoffmann, 2009/09/10
- [Qemu-devel] [PATCH v2 19/23] convert udp chardev to QemuOpts., Gerd Hoffmann, 2009/09/10
- [Qemu-devel] [PATCH v2 07/23] sockets: add unix_*_opts for windows., Gerd Hoffmann, 2009/09/10
- [Qemu-devel] [PATCH v2 22/23] monitor: fix muxing, Gerd Hoffmann, 2009/09/10
- [Qemu-devel] [PATCH v2 16/23] convert tty + parport chardevs to QemuOpts., Gerd Hoffmann, 2009/09/10
- [Qemu-devel] [PATCH v2 20/23] Allow -serial chardev:<name>, Gerd Hoffmann, 2009/09/10
- [Qemu-devel] [PATCH v2 23/23] move mux focus field from CharDriverState to MuxDriver, Gerd Hoffmann, 2009/09/10
- [Qemu-devel] [PATCH v2 18/23] convert mux chardev to QemuOpts.,
Gerd Hoffmann <=