Hi On Tue, Jan 31, 2017 at 12:08 AM Paolo Bonzini <pbonz...@redhat.com> wrote:
> > > On 30/01/2017 08:39, Marc-André Lureau wrote: > > The class kind is necessary to lookup the chardev name in > > qmp_chardev_add() after calling qemu_chr_new_from_opts() and to set > > the appropriate ChardevBackend (mainly to free the right > > fields). > > > > qemu_chr_new_from_opts() can be changed to use a non-qmp function > > using the chardev class typename. Introduce qemu_chardev_add() to be > > called from qemu_chr_new_from_opts() and remove the class chardev kind > > field. Set the backend->type in the parse callback (when non-common > > fields are added). > > > > Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> > > --- > > include/sysemu/char.h | 1 - > > backends/baum.c | 1 - > > backends/msmouse.c | 1 - > > backends/testdev.c | 1 - > > qemu-char.c | 99 > +++++++++++++++++++++++++-------------------------- > > spice-qemu-char.c | 4 +-- > > ui/console.c | 2 +- > > ui/gtk.c | 1 - > > 8 files changed, 51 insertions(+), 59 deletions(-) > > I am not sure about this patch. Why not remove backend->type > altogether, and instead look at ChardevClass with object_dynamic_cast? > > For the reason I gave in the patch summary: qapi_free_ChardevBackend() dispatch based on ChardevBackendKind enum, not on Chardev object type. -- Marc-André Lureau