From: Eric Blake <eblake@redhat.com>
To: "Marc-André Lureau" <marcandre.lureau@redhat.com>, qemu-devel@nongnu.org
Cc: pbonzini@redhat.com
Subject: Re: [Qemu-devel] [PATCH v2 17/41] char: get rid of CharDriver
Date: Mon, 30 Jan 2017 13:50:28 -0600 [thread overview]
Message-ID: <03c6fb68-3051-dd02-cbea-19b3b2ed70b3@redhat.com> (raw)
In-Reply-To: <20170130133954.31353-18-marcandre.lureau@redhat.com>
[-- Attachment #1: Type: text/plain, Size: 2896 bytes --]
On 01/30/2017 07:39 AM, Marc-André Lureau wrote:
> qemu_chr_new_from_opts() is modified to not need CharDriver backend[]
> array, but uses instead objectified qmp_query_chardev_backends() and
> char_get_class(). The alias field is moved outside in a ChardevAlias[],
> similar to QDevAlias for devices.
>
> "kind" and "parse" are moved to ChardevClass ("kind" is to be removed
> next)
>
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
> include/sysemu/char.h | 12 +-
> backends/baum.c | 6 +-
> backends/msmouse.c | 6 +-
> backends/testdev.c | 6 +-
> qemu-char.c | 315 +++++++++++++++++++++++---------------------------
> spice-qemu-char.c | 15 +--
> ui/console.c | 10 +-
> ui/gtk.c | 10 +-
> 8 files changed, 159 insertions(+), 221 deletions(-)
>
> +static void
> +chardev_name_foreach(void (*fn)(const char *name, void *opaque), void *opaque)
> +{
> + ChadevClassFE fe = { .fn = fn, .opaque = opaque };
> + int i;
> +
> + object_class_foreach(chardev_class_foreach, TYPE_CHARDEV, false, &fe);
> +
> + for (i = 0; i < ARRAY_SIZE(chardev_alias_table); i++) {
> + fn(chardev_alias_table[i].alias, opaque);
> + }
This now visits all aliases last,...
> @@ -4182,15 +4237,8 @@ Chardev *qemu_chr_new_from_opts(QemuOpts *opts,
>
> if (is_help_option(name)) {
> GString *str = g_string_new("");
> - for (i = 0; i < ARRAY_SIZE(backends); i++) {
> - cd = backends[i];
> - if (cd) {
> - g_string_append_printf(str, "\n%s", ChardevBackendKind_lookup[cd->kind]);
> - if (cd->alias) {
> - g_string_append_printf(str, "\n%s", cd->alias);
> - }
> - }
> - }
...while the old code visited them inline. But that's cosmetic; I don't
think it hurts.
> +
> + chardev_name_foreach(help_string_append, str);
>
> ChardevBackendInfoList *qmp_query_chardev_backends(Error **errp)
> {
> ChardevBackendInfoList *backend_list = NULL;
> - const CharDriver *c;
> - int i;
>
> - for (i = 0; i < ARRAY_SIZE(backends); i++) {
> - c = backends[i];
> - if (!c) {
> - continue;
> - }
> -
> - backend_list = qmp_prepend_backend(backend_list,
> - ChardevBackendKind_lookup[c->kind]);
> - if (c->alias) {
> - backend_list = qmp_prepend_backend(backend_list, c->alias);
> - }
> - }
> + chardev_name_foreach(qmp_prepend_backend, &backend_list);
And the refactoring into visitor/callback made for some nice reuse.
Reviewed-by: Eric Blake <eblake@redhat.com>
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 604 bytes --]
next prev parent reply other threads:[~2017-01-30 19:50 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-30 13:39 [Qemu-devel] [PATCH v2 00/41] chardev: qom clean-up and split in various backend files Marc-André Lureau
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 01/41] MAINTAINERS: add myself to qemu-char.c Marc-André Lureau
2017-01-30 19:33 ` Paolo Bonzini
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 02/41] spice-qemu-char: convert to finalize Marc-André Lureau
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 03/41] baum: " Marc-André Lureau
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 04/41] msmouse: " Marc-André Lureau
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 05/41] mux: " Marc-André Lureau
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 06/41] char-udp: " Marc-André Lureau
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 07/41] char-socket: " Marc-André Lureau
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 08/41] char-pty: " Marc-André Lureau
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 09/41] char-ringbuf: " Marc-André Lureau
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 10/41] char-parallel: convert parallel " Marc-André Lureau
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 11/41] char-stdio: convert " Marc-André Lureau
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 12/41] char-win-stdio: " Marc-André Lureau
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 13/41] char-win: do not override chr_free Marc-André Lureau
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 14/41] char-win: convert to finalize Marc-André Lureau
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 15/41] char-fd: " Marc-André Lureau
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 16/41] char: remove chr_free Marc-André Lureau
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 17/41] char: get rid of CharDriver Marc-André Lureau
2017-01-30 19:50 ` Eric Blake [this message]
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 18/41] char: rename remaining CharDriver to Chardev Marc-André Lureau
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 19/41] char: remove class kind field Marc-André Lureau
2017-01-30 19:57 ` Eric Blake
2017-01-30 20:06 ` Paolo Bonzini
2017-01-31 9:08 ` Marc-André Lureau
2017-01-31 11:23 ` Marc-André Lureau
2017-01-31 15:32 ` Paolo Bonzini
2017-01-31 15:32 ` Paolo Bonzini
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 20/41] char: move to chardev/ Marc-André Lureau
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 21/41] char: create chardev-obj-y Marc-André Lureau
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 22/41] char: make null_chr_write() the default method Marc-André Lureau
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 23/41] char: move null chardev to its own file Marc-André Lureau
2017-01-30 19:58 ` Eric Blake
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 24/41] char: move mux " Marc-André Lureau
2017-01-30 20:04 ` Eric Blake
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 25/41] char: move ringbuf/memory " Marc-André Lureau
2017-01-30 20:04 ` Eric Blake
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 26/41] char: rename and move to header CHR_READ_BUF_LEN Marc-André Lureau
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 27/41] char: remove unused READ_RETRIES Marc-André Lureau
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 28/41] char: move QIOChannel-related stuff to char-io.h Marc-André Lureau
2017-01-30 20:07 ` Eric Blake
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 29/41] char: move fd chardev in its own file Marc-André Lureau
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 30/41] char: move win chardev base class " Marc-André Lureau
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 31/41] char: move win-stdio into " Marc-André Lureau
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 32/41] char: move socket chardev to " Marc-André Lureau
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 33/41] char: move udp chardev in " Marc-André Lureau
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 34/41] char: move file " Marc-André Lureau
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 35/41] char: move stdio " Marc-André Lureau
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 36/41] char: move console " Marc-André Lureau
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 37/41] char: move pipe chardev " Marc-André Lureau
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 38/41] char: move pty " Marc-André Lureau
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 39/41] char: move serial chardev to " Marc-André Lureau
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 40/41] char: move parallel chardev in " Marc-André Lureau
2017-01-30 13:39 ` [Qemu-devel] [PATCH v2 41/41] char: headers clean-up Marc-André Lureau
2017-01-30 14:43 ` [Qemu-devel] [PATCH v2 00/41] chardev: qom clean-up and split in various backend files no-reply
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=03c6fb68-3051-dd02-cbea-19b3b2ed70b3@redhat.com \
--to=eblake@redhat.com \
--cc=marcandre.lureau@redhat.com \
--cc=pbonzini@redhat.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).