[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 7/9] chardev: add stdio support to qapi
From: |
Gerd Hoffmann |
Subject: |
[Qemu-devel] [PATCH 7/9] chardev: add stdio support to qapi |
Date: |
Mon, 25 Feb 2013 10:03:41 +0100 |
This patch adds 'stdio' support to qapi and also switches over the
stdio chardev initialization to the new qapi code path.
Signed-off-by: Gerd Hoffmann <address@hidden>
---
qapi-schema.json | 14 +++++++++++++-
qemu-char.c | 26 ++++++++++++++++++++------
2 files changed, 33 insertions(+), 7 deletions(-)
diff --git a/qapi-schema.json b/qapi-schema.json
index f873451..b0ca67d 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -3146,6 +3146,17 @@
{ 'type': 'ChardevMux', 'data': { 'chardev' : 'str' } }
##
+# @ChardevStdio:
+#
+# Configuration info for stdio chardevs.
+#
+# @signal: Allow signals (such as SIGINT triggered by ^C) be delivered to qemu.
+#
+# Since: 1.5
+##
+{ 'type': 'ChardevStdio', 'data': { '*signal' : 'bool' } }
+
+##
# @ChardevBackend:
#
# Configuration info for the new chardev backend.
@@ -3162,7 +3173,8 @@
'null' : 'ChardevDummy',
'mux' : 'ChardevMux',
'msmouse': 'ChardevDummy',
- 'braille': 'ChardevDummy' } }
+ 'braille': 'ChardevDummy',
+ 'stdio' : 'ChardevStdio' } }
##
# @ChardevReturn:
diff --git a/qemu-char.c b/qemu-char.c
index 51a43c1..4fdf381 100644
--- a/qemu-char.c
+++ b/qemu-char.c
@@ -753,7 +753,7 @@ static void qemu_chr_close_stdio(struct CharDriverState
*chr)
fd_chr_close(chr);
}
-static CharDriverState *qemu_chr_open_stdio(QemuOpts *opts)
+static CharDriverState *qemu_chr_open_stdio(ChardevStdio *opts)
{
CharDriverState *chr;
@@ -776,8 +776,10 @@ static CharDriverState *qemu_chr_open_stdio(QemuOpts *opts)
chr->chr_set_echo = qemu_chr_set_echo_stdio;
qemu_set_fd_handler2(0, stdio_read_poll, stdio_read, NULL, chr);
stdio_nb_clients++;
- stdio_allow_signal = qemu_opt_get_bool(opts, "signal",
- display_type != DT_NOGRAPHIC);
+ stdio_allow_signal = display_type != DT_NOGRAPHIC;
+ if (opts->has_signal) {
+ stdio_allow_signal = opts->signal;
+ }
qemu_chr_fe_set_echo(chr, false);
return chr;
@@ -1928,7 +1930,7 @@ static void win_stdio_close(CharDriverState *chr)
stdio_nb_clients--;
}
-static CharDriverState *qemu_chr_open_win_stdio(QemuOpts *opts)
+static CharDriverState *qemu_chr_open_stdio(ChardevStdio *opts)
{
CharDriverState *chr;
WinStdioCharState *stdio;
@@ -2959,6 +2961,15 @@ static void qemu_chr_parse_file_out(QemuOpts *opts,
ChardevBackend *backend,
backend->file->out = g_strdup(path);
}
+static void qemu_chr_parse_stdio(QemuOpts *opts, ChardevBackend *backend,
+ Error **errp)
+{
+ backend->stdio = g_new0(ChardevStdio, 1);
+ backend->stdio->has_signal = true;
+ backend->stdio->signal =
+ qemu_opt_get_bool(opts, "signal", display_type != DT_NOGRAPHIC);
+}
+
static const struct {
const char *name;
/* old, pre qapi */
@@ -2975,14 +2986,14 @@ static const struct {
{ .name = "memory", .open = qemu_chr_open_ringbuf },
{ .name = "file", .kind = CHARDEV_BACKEND_KIND_FILE,
.parse = qemu_chr_parse_file_out },
+ { .name = "stdio", .kind = CHARDEV_BACKEND_KIND_STDIO,
+ .parse = qemu_chr_parse_stdio },
#ifdef _WIN32
{ .name = "pipe", .open = qemu_chr_open_win_pipe },
{ .name = "console", .open = qemu_chr_open_win_con },
{ .name = "serial", .open = qemu_chr_open_win },
- { .name = "stdio", .open = qemu_chr_open_win_stdio },
#else
{ .name = "pipe", .open = qemu_chr_open_pipe },
- { .name = "stdio", .open = qemu_chr_open_stdio },
#endif
#ifdef CONFIG_BRLAPI
{ .name = "braille", .kind = CHARDEV_BACKEND_KIND_BRAILLE },
@@ -3472,6 +3483,9 @@ ChardevReturn *qmp_chardev_add(const char *id,
ChardevBackend *backend,
chr = chr_baum_init();
break;
#endif
+ case CHARDEV_BACKEND_KIND_STDIO:
+ chr = qemu_chr_open_stdio(backend->stdio);
+ break;
default:
error_setg(errp, "unknown chardev backend (%d)", backend->kind);
break;
--
1.7.9.7
- [Qemu-devel] [PATCH 0/9] chardev: qapi conversion continued, Gerd Hoffmann, 2013/02/25
- [Qemu-devel] [PATCH 2/2] unbreak hw/usb/redirect.c build, Gerd Hoffmann, 2013/02/25
- [Qemu-devel] [PATCH 2/9] chardev: add mux chardev support to qapi, Gerd Hoffmann, 2013/02/25
- [Qemu-devel] [PATCH 1/9] chardev: add support for qapi-based chardev initialization, Gerd Hoffmann, 2013/02/25
- [Qemu-devel] [PATCH 1/2] require gtk 2.20+, Gerd Hoffmann, 2013/02/25
- [Qemu-devel] [PATCH 3/9] chardev: switch null init to qapi, Gerd Hoffmann, 2013/02/25
- [Qemu-devel] [PATCH 8/9] chardev: switch serial/tty init to qapi, Gerd Hoffmann, 2013/02/25
- [Qemu-devel] [PATCH 5/9] chardev: add braille support to qapi, Gerd Hoffmann, 2013/02/25
- [Qemu-devel] [PATCH 7/9] chardev: add stdio support to qapi,
Gerd Hoffmann <=
- [Qemu-devel] [PATCH 6/9] chardev: switch file init to qapi, Gerd Hoffmann, 2013/02/25
- [Qemu-devel] [PATCH 4/9] chardev: add msmouse support to qapi, Gerd Hoffmann, 2013/02/25
- [Qemu-devel] [PATCH 9/9] chardev: switch parallel init to qapi, Gerd Hoffmann, 2013/02/25
- [Qemu-devel] SocketAdress + udb, Gerd Hoffmann, 2013/02/26