[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 11/11] chardev: add pty chardev support to chardev-a
From: |
Gerd Hoffmann |
Subject: |
[Qemu-devel] [PATCH 11/11] chardev: add pty chardev support to chardev-add (qmp) |
Date: |
Mon, 7 Jan 2013 14:55:28 +0100 |
The ptsname is returned directly, so there is no need to
use query-chardev to figure the pty device path.
Signed-off-by: Gerd Hoffmann <address@hidden>
---
qapi-schema.json | 7 ++++++-
qemu-char.c | 24 +++++++++++++++++++++---
2 files changed, 27 insertions(+), 4 deletions(-)
diff --git a/qapi-schema.json b/qapi-schema.json
index 39e0ab4..63c61c4 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -3054,10 +3054,15 @@
{ 'union': 'ChardevBackend', 'data': { 'file' : 'ChardevFile',
'port' : 'ChardevPort',
'socket' : 'ChardevSocket',
+ 'pty' : 'ChardevDummy',
'null' : 'ChardevDummy' } }
+{ 'union': 'ChardevReturn', 'data': { 'pty' : 'str',
+ 'nodata' : 'ChardevDummy' } }
+
{ 'command': 'chardev-add', 'data': {'id' : 'str',
- 'backend' : 'ChardevBackend' } }
+ 'backend' : 'ChardevBackend' },
+ 'returns' : 'ChardevReturn' }
##
# @chardev-remove:
diff --git a/qemu-char.c b/qemu-char.c
index 01d65e2..abce95f 100644
--- a/qemu-char.c
+++ b/qemu-char.c
@@ -3129,9 +3129,13 @@ static CharDriverState
*qmp_chardev_open_socket(ChardevSocket *sock,
is_telnet, is_waitconnect, errp);
}
-void qmp_chardev_add(const char *id, ChardevBackend *backend, Error **errp)
+ChardevReturn *qmp_chardev_add(const char *id, ChardevBackend *backend,
+ Error **errp)
{
- CharDriverState *chr;
+ ChardevReturn *ret = g_new0(ChardevReturn, 1);
+ CharDriverState *chr = NULL;
+
+ ret->kind = CHARDEV_RETURN_KIND_NODATA;
switch (backend->kind) {
case CHARDEV_BACKEND_KIND_FILE:
@@ -3143,12 +3147,25 @@ void qmp_chardev_add(const char *id, ChardevBackend
*backend, Error **errp)
case CHARDEV_BACKEND_KIND_SOCKET:
chr = qmp_chardev_open_socket(backend->socket, errp);
break;
+#ifdef HAVE_CHARDEV_TTY
+ case CHARDEV_BACKEND_KIND_PTY:
+ {
+ /* qemu_chr_open_pty sets "path" in opts */
+ QemuOpts *opts;
+ opts = qemu_opts_create_nofail(qemu_find_opts("chardev"));
+ chr = qemu_chr_open_pty(opts);
+ ret->kind = CHARDEV_RETURN_KIND_PTY;
+ ret->pty = g_strdup(qemu_opt_get(opts, "path"));
+ qemu_opts_del(opts);
+ break;
+ }
+#endif
case CHARDEV_BACKEND_KIND_NULL:
chr = qemu_chr_open_null(NULL);
break;
default:
error_setg(errp, "unknown chardev backend (%d)", backend->kind);
- return;
+ break;
}
if (chr == NULL && !error_is_set(errp)) {
@@ -3159,6 +3176,7 @@ void qmp_chardev_add(const char *id, ChardevBackend
*backend, Error **errp)
chr->avail_connections = 1;
QTAILQ_INSERT_TAIL(&chardevs, chr, next);
}
+ return ret;
}
void qmp_chardev_remove(const char *id, Error **errp)
--
1.7.1
- Re: [Qemu-devel] [PATCH 05/11] chardev: add hmp hotplug commands, (continued)
[Qemu-devel] [PATCH 10/11] chardev: add socket chardev support to chardev-add (qmp), Gerd Hoffmann, 2013/01/07
[Qemu-devel] [PATCH 07/11] chardev: add tty chardev support to chardev-add (qmp), Gerd Hoffmann, 2013/01/07
[Qemu-devel] [PATCH 03/11] chardev: reduce chardev ifdef mess a bit, Gerd Hoffmann, 2013/01/07
[Qemu-devel] [PATCH 11/11] chardev: add pty chardev support to chardev-add (qmp),
Gerd Hoffmann <=
[Qemu-devel] [PATCH 06/11] chardev: add file chardev support to chardev-add (qmp), Gerd Hoffmann, 2013/01/07