diff options
author | Marc-André Lureau <marcandre.lureau@redhat.com> | 2016-10-22 12:52:50 +0300 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2016-10-24 15:27:20 +0200 |
commit | ecb672d14f092f481000ac9cd9d7dc0500692eba (patch) | |
tree | 1e09c2e2f8314ce83110dd77c07e8995d8937ddd | |
parent | 94a40fc56036b5058b0b194d9e372a22e65ce7be (diff) |
char: start converting mux driver to use CharBackend
Start using qemu_chr_fe* CharBackend functions:
initialize a CharBackend and use qemu_chr_fe_set_handlers().
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-Id: <20161022095318.17775-11-marcandre.lureau@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r-- | qemu-char.c | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/qemu-char.c b/qemu-char.c index 9c27371e3c..9eefa7f42c 100644 --- a/qemu-char.c +++ b/qemu-char.c @@ -502,9 +502,7 @@ void qemu_chr_add_handlers_full(CharDriverState *s, if (s->is_mux) { tag = mux_chr_new_handler_tag(s, &error_abort); - if (tag == 0) { - mux_chr_set_handlers(s, context); - } + mux_chr_set_handlers(s, context); } qemu_chr_set_handlers(s, fd_can_read, fd_read, @@ -557,6 +555,7 @@ struct MuxDriver { IOEventHandler *chr_event[MAX_MUX]; void *ext_opaque[MAX_MUX]; CharDriverState *drv; + CharBackend chr; int focus; int mux_cnt; int term_got_escape; @@ -847,12 +846,12 @@ static void mux_chr_set_handlers(CharDriverState *chr, GMainContext *context) MuxDriver *d = chr->opaque; /* Fix up the real driver with mux routines */ - qemu_chr_add_handlers_full(d->drv, - mux_chr_can_read, - mux_chr_read, - mux_chr_event, - chr, - context); + qemu_chr_fe_set_handlers(&d->chr, + mux_chr_can_read, + mux_chr_read, + mux_chr_event, + chr, + context); } static void mux_set_focus(MuxDriver *d, int focus) @@ -906,6 +905,10 @@ static CharDriverState *qemu_chr_open_mux(const char *id, */ chr->explicit_be_open = muxes_realized ? 0 : 1; chr->is_mux = 1; + if (!qemu_chr_fe_init(&d->chr, d->drv, errp)) { + qemu_chr_free(chr); + return NULL; + } return chr; } @@ -4231,9 +4234,6 @@ void qemu_chr_disconnect(CharDriverState *chr) static void qemu_chr_free_common(CharDriverState *chr) { - if (chr->be) { - chr->be->chr = NULL; - } g_free(chr->filename); g_free(chr->label); if (chr->logfd != -1) { |