From: Gerd Hoffmann <kraxel@redhat.com>
To: qemu-devel@nongnu.org
Cc: Anthony Liguori <aliguori@us.ibm.com>, Gerd Hoffmann <kraxel@redhat.com>
Subject: [Qemu-devel] [PATCH 14/19] chardev: add vc support to qapi
Date: Tue, 12 Mar 2013 09:56:24 +0100 [thread overview]
Message-ID: <1363078589-15233-15-git-send-email-kraxel@redhat.com> (raw)
In-Reply-To: <1363078589-15233-1-git-send-email-kraxel@redhat.com>
This patch adds 'vc' support to qapi and also switches over the
vc chardev initialization to the new qapi code path.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
include/ui/console.h | 4 ++--
qapi-schema.json | 20 ++++++++++++++++-
ui/console.c | 61 ++++++++++++++++++++++++++++++++++++++++----------
ui/gtk.c | 2 +-
4 files changed, 71 insertions(+), 16 deletions(-)
diff --git a/include/ui/console.h b/include/ui/console.h
index c42bca6..a37cf65 100644
--- a/include/ui/console.h
+++ b/include/ui/console.h
@@ -450,9 +450,9 @@ void qemu_console_resize(DisplayState *ds, int width, int height);
void qemu_console_copy(DisplayState *ds, int src_x, int src_y,
int dst_x, int dst_y, int w, int h);
-typedef CharDriverState *(VcHandler)(QemuOpts *);
+typedef CharDriverState *(VcHandler)(ChardevVC *vc);
-CharDriverState *vc_init(QemuOpts *opts);
+CharDriverState *vc_init(ChardevVC *vc);
void register_vc_handler(VcHandler *handler);
/* sdl.c */
diff --git a/qapi-schema.json b/qapi-schema.json
index f570185..3c12122 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -3231,6 +3231,23 @@
{ 'type': 'ChardevSpicePort', 'data': { 'fqdn' : 'str' } }
##
+# @ChardevVC:
+#
+# Configuration info for virtual console chardevs.
+#
+# @width: console width, in pixels
+# @height: console height, in pixels
+# @cols: console width, in chars
+# @rows: console height, in chars
+#
+# Since: 1.5
+##
+{ 'type': 'ChardevVC', 'data': { '*width' : 'int',
+ '*height' : 'int',
+ '*cols' : 'int',
+ '*rows' : 'int' } }
+
+##
# @ChardevBackend:
#
# Configuration info for the new chardev backend.
@@ -3252,7 +3269,8 @@
'stdio' : 'ChardevStdio',
'console': 'ChardevDummy',
'spicevmc' : 'ChardevSpiceChannel',
- 'spiceport' : 'ChardevSpicePort' } }
+ 'spiceport' : 'ChardevSpicePort',
+ 'vc' : 'ChardevVC' } }
##
# @ChardevReturn:
diff --git a/ui/console.c b/ui/console.c
index 83a6fa3..27e87f8 100644
--- a/ui/console.c
+++ b/ui/console.c
@@ -1537,22 +1537,26 @@ static void text_console_do_init(CharDriverState *chr, DisplayState *ds)
chr->init(chr);
}
-static CharDriverState *text_console_init(QemuOpts *opts)
+static CharDriverState *text_console_init(ChardevVC *vc)
{
CharDriverState *chr;
QemuConsole *s;
- unsigned width;
- unsigned height;
+ unsigned width = 0;
+ unsigned height = 0;
chr = g_malloc0(sizeof(CharDriverState));
- width = qemu_opt_get_number(opts, "width", 0);
- if (width == 0)
- width = qemu_opt_get_number(opts, "cols", 0) * FONT_WIDTH;
+ if (vc->has_width) {
+ width = vc->width;
+ } else if (vc->has_cols) {
+ width = vc->cols * FONT_WIDTH;
+ }
- height = qemu_opt_get_number(opts, "height", 0);
- if (height == 0)
- height = qemu_opt_get_number(opts, "rows", 0) * FONT_HEIGHT;
+ if (vc->has_height) {
+ height = vc->height;
+ } else if (vc->has_rows) {
+ height = vc->rows * FONT_HEIGHT;
+ }
if (width == 0 || height == 0) {
s = new_console(NULL, TEXT_CONSOLE);
@@ -1575,9 +1579,9 @@ static CharDriverState *text_console_init(QemuOpts *opts)
static VcHandler *vc_handler = text_console_init;
-CharDriverState *vc_init(QemuOpts *opts)
+CharDriverState *vc_init(ChardevVC *vc)
{
- return vc_handler(opts);
+ return vc_handler(vc);
}
void register_vc_handler(VcHandler *handler)
@@ -1740,9 +1744,42 @@ PixelFormat qemu_default_pixelformat(int bpp)
return pf;
}
+static void qemu_chr_parse_vc(QemuOpts *opts, ChardevBackend *backend,
+ Error **errp)
+{
+ int val;
+
+ backend->vc = g_new0(ChardevVC, 1);
+
+ val = qemu_opt_get_number(opts, "width", 0);
+ if (val != 0) {
+ backend->vc->has_width = true;
+ backend->vc->width = val;
+ }
+
+ val = qemu_opt_get_number(opts, "height", 0);
+ if (val != 0) {
+ backend->vc->has_height = true;
+ backend->vc->height = val;
+ }
+
+ val = qemu_opt_get_number(opts, "cols", 0);
+ if (val != 0) {
+ backend->vc->has_cols = true;
+ backend->vc->cols = val;
+ }
+
+ val = qemu_opt_get_number(opts, "rows", 0);
+ if (val != 0) {
+ backend->vc->has_rows = true;
+ backend->vc->rows = val;
+ }
+}
+
static void register_types(void)
{
- register_char_driver("vc", text_console_init);
+ register_char_driver_qapi("vc", CHARDEV_BACKEND_KIND_VC,
+ qemu_chr_parse_vc);
}
type_init(register_types);
diff --git a/ui/gtk.c b/ui/gtk.c
index 544593e..794dab1 100644
--- a/ui/gtk.c
+++ b/ui/gtk.c
@@ -991,7 +991,7 @@ static int gd_vc_chr_write(CharDriverState *chr, const uint8_t *buf, int len)
static int nb_vcs;
static CharDriverState *vcs[MAX_VCS];
-static CharDriverState *gd_vc_handler(QemuOpts *opts)
+static CharDriverState *gd_vc_handler(ChardevVC *unused)
{
CharDriverState *chr;
--
1.7.9.7
next prev parent reply other threads:[~2013-03-12 9:14 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-12 8:56 [Qemu-devel] [PULL v3 00/19] chardev: qapi conversion continued Gerd Hoffmann
2013-03-12 8:56 ` [Qemu-devel] [PATCH 01/19] chardev: add support for qapi-based chardev initialization Gerd Hoffmann
2013-03-12 8:56 ` [Qemu-devel] [PATCH 02/19] chardev: add mux chardev support to qapi Gerd Hoffmann
2013-03-12 8:56 ` [Qemu-devel] [PATCH 03/19] chardev: switch null init " Gerd Hoffmann
2013-03-12 8:56 ` [Qemu-devel] [PATCH 04/19] chardev: add msmouse support " Gerd Hoffmann
2013-03-12 8:56 ` [Qemu-devel] [PATCH 05/19] chardev: add braille " Gerd Hoffmann
2013-03-12 8:56 ` [Qemu-devel] [PATCH 06/19] chardev: switch file init " Gerd Hoffmann
2013-03-12 8:56 ` [Qemu-devel] [PATCH 07/19] chardev: add stdio support " Gerd Hoffmann
2013-03-12 8:56 ` [Qemu-devel] [PATCH 08/19] chardev: switch serial/tty init " Gerd Hoffmann
2013-03-12 8:56 ` [Qemu-devel] [PATCH 09/19] chardev: switch parallel " Gerd Hoffmann
2013-03-12 8:56 ` [Qemu-devel] [PATCH 10/19] chardev: switch pty " Gerd Hoffmann
2013-03-12 8:56 ` [Qemu-devel] [PATCH 11/19] chardev: add console support " Gerd Hoffmann
2013-03-12 8:56 ` [Qemu-devel] [PATCH 12/19] chardev: add pipe " Gerd Hoffmann
2013-03-12 8:56 ` [Qemu-devel] [PATCH 13/19] chardev: add spice " Gerd Hoffmann
2013-03-12 8:56 ` Gerd Hoffmann [this message]
2013-03-12 8:56 ` [Qemu-devel] [PATCH 15/19] [fixup] vc Gerd Hoffmann
2013-03-12 17:42 ` Eric Blake
2013-03-13 6:46 ` Gerd Hoffmann
2013-03-12 8:56 ` [Qemu-devel] [PATCH 16/19] chardev: add memory (ringbuf) support to qapi Gerd Hoffmann
2013-03-12 8:56 ` [Qemu-devel] [PATCH 17/19] chardev: add udp " Gerd Hoffmann
2013-03-12 8:56 ` [Qemu-devel] [PATCH 18/19] Revert "hmp: Disable chardev-add and chardev-remove" Gerd Hoffmann
2013-03-12 8:56 ` [Qemu-devel] [PATCH 19/19] qemu-char.c: fix waiting for telnet connection message Gerd Hoffmann
2013-03-12 9:08 ` [Qemu-devel] [PULL v3 00/19] chardev: qapi conversion continued Gerd Hoffmann
2013-03-13 12:39 ` Anthony Liguori
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1363078589-15233-15-git-send-email-kraxel@redhat.com \
--to=kraxel@redhat.com \
--cc=aliguori@us.ibm.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).