[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 07/17] chardev: add stdio support to qapi
From: |
Gerd Hoffmann |
Subject: |
[Qemu-devel] [PATCH 07/17] chardev: add stdio support to qapi |
Date: |
Thu, 28 Feb 2013 08:49:59 +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 | 16 +++++++++++++++-
qemu-char.c | 26 ++++++++++++++++++++------
2 files changed, 35 insertions(+), 7 deletions(-)
diff --git a/qapi-schema.json b/qapi-schema.json
index 5dcfbfe..77d4153 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -3196,6 +3196,19 @@
{ 'type': 'ChardevMux', 'data': { 'chardev' : 'str' } }
##
+# @ChardevStdio:
+#
+# Configuration info for stdio chardevs.
+#
+# @signal: #optional Allow signals (such as SIGINT triggered by ^C)
+# be delivered to qemu. Default: true in -nographic mode,
+# false otherwise.
+#
+# Since: 1.5
+##
+{ 'type': 'ChardevStdio', 'data': { '*signal' : 'bool' } }
+
+##
# @ChardevBackend:
#
# Configuration info for the new chardev backend.
@@ -3212,7 +3225,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 180fffe..93ed49f 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
{ .name = "braille", .kind = CHARDEV_BACKEND_KIND_BRAILLE },
#ifdef HAVE_CHARDEV_TTY
@@ -3470,6 +3481,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 00/17] chardev: qapi conversion continued, Gerd Hoffmann, 2013/02/28
- [Qemu-devel] [PATCH 03/17] chardev: switch null init to qapi, Gerd Hoffmann, 2013/02/28
- [Qemu-devel] [PATCH 05/17] chardev: add braille support to qapi, Gerd Hoffmann, 2013/02/28
- [Qemu-devel] [PATCH 07/17] chardev: add stdio support to qapi,
Gerd Hoffmann <=
- [Qemu-devel] [PATCH 08/17] chardev: switch serial/tty init to qapi, Gerd Hoffmann, 2013/02/28
- [Qemu-devel] [PATCH 15/17] chardev: add memory (ringbuf) support to qapi, Gerd Hoffmann, 2013/02/28
- [Qemu-devel] [PATCH 16/17] chardev: add udp support to qapi, Gerd Hoffmann, 2013/02/28
- [Qemu-devel] [PATCH 01/17] chardev: add support for qapi-based chardev initialization, Gerd Hoffmann, 2013/02/28
- [Qemu-devel] [PATCH 17/17] Revert "hmp: Disable chardev-add and chardev-remove", Gerd Hoffmann, 2013/02/28
- [Qemu-devel] [PATCH 12/17] chardev: add pipe support to qapi, Gerd Hoffmann, 2013/02/28
- [Qemu-devel] [PATCH 14/17] chardev: add vc support to qapi, Gerd Hoffmann, 2013/02/28
- [Qemu-devel] [PATCH 11/17] chardev: add console support to qapi, Gerd Hoffmann, 2013/02/28
- [Qemu-devel] [PATCH 13/17] chardev: add spice support to qapi, Gerd Hoffmann, 2013/02/28
- [Qemu-devel] [PATCH 06/17] chardev: switch file init to qapi, Gerd Hoffmann, 2013/02/28