From c39860e6dc90f6ee2e82ee078f978c5d7f3df86a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Sat, 22 Oct 2016 12:52:58 +0300 Subject: char: replace qemu_chr_claim/release with qemu_chr_fe_init/deinit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Now that all front end use qemu_chr_fe_init(), we can move chardev claiming in init(), and add a function deinit() to release the chardev and cleanup handlers. The qemu_chr_fe_claim_no_fail() for property are gone, since the property will raise an error instead. In other cases, where there is already an error path, an error is raised instead. Finally, other cases are handled by &error_abort in qemu_chr_fe_init(). Signed-off-by: Marc-André Lureau Message-Id: <20161022095318.17775-19-marcandre.lureau@redhat.com> Signed-off-by: Paolo Bonzini --- hw/char/mcf_uart.c | 1 - hw/char/serial.c | 2 +- hw/char/sh_serial.c | 1 - hw/char/xen_console.c | 16 +++------------- 4 files changed, 4 insertions(+), 16 deletions(-) (limited to 'hw/char') diff --git a/hw/char/mcf_uart.c b/hw/char/mcf_uart.c index cc3db1373c..b5053431e5 100644 --- a/hw/char/mcf_uart.c +++ b/hw/char/mcf_uart.c @@ -285,7 +285,6 @@ void *mcf_uart_init(qemu_irq irq, CharDriverState *chr) s->irq = irq; if (chr) { qemu_chr_fe_init(&s->chr, chr, &error_abort); - qemu_chr_fe_claim_no_fail(chr); qemu_chr_fe_set_handlers(&s->chr, mcf_uart_can_receive, mcf_uart_receive, mcf_uart_event, s, NULL); } diff --git a/hw/char/serial.c b/hw/char/serial.c index 509bc252df..54f80c6e91 100644 --- a/hw/char/serial.c +++ b/hw/char/serial.c @@ -905,7 +905,7 @@ void serial_realize_core(SerialState *s, Error **errp) void serial_exit_core(SerialState *s) { - qemu_chr_fe_set_handlers(&s->chr, NULL, NULL, NULL, NULL, NULL); + qemu_chr_fe_deinit(&s->chr); qemu_unregister_reset(serial_reset, s); } diff --git a/hw/char/sh_serial.c b/hw/char/sh_serial.c index 8d82986d35..8bb45db634 100644 --- a/hw/char/sh_serial.c +++ b/hw/char/sh_serial.c @@ -397,7 +397,6 @@ void sh_serial_init(MemoryRegion *sysmem, memory_region_add_subregion(sysmem, A7ADDR(base), &s->iomem_a7); if (chr) { - qemu_chr_fe_claim_no_fail(chr); qemu_chr_fe_init(&s->chr, chr, &error_abort); qemu_chr_fe_set_handlers(&s->chr, sh_serial_can_receive1, sh_serial_receive1, diff --git a/hw/char/xen_console.c b/hw/char/xen_console.c index 5e5aca1ed6..f664366f7c 100644 --- a/hw/char/xen_console.c +++ b/hw/char/xen_console.c @@ -245,15 +245,8 @@ static int con_initialise(struct XenDevice *xendev) xen_be_bind_evtchn(&con->xendev); if (con->chr.chr) { - if (qemu_chr_fe_claim(con->chr.chr) == 0) { - qemu_chr_fe_set_handlers(&con->chr, xencons_can_receive, - xencons_receive, NULL, con, NULL); - } else { - xen_be_printf(xendev, 0, - "xen_console_init error chardev %s already used\n", - con->chr.chr->label); - con->chr.chr = NULL; - } + qemu_chr_fe_set_handlers(&con->chr, xencons_can_receive, + xencons_receive, NULL, con, NULL); } xen_be_printf(xendev, 1, "ring mfn %d, remote port %d, local port %d, limit %zd\n", @@ -268,10 +261,7 @@ static void con_disconnect(struct XenDevice *xendev) { struct XenConsole *con = container_of(xendev, struct XenConsole, xendev); - if (con->chr.chr) { - qemu_chr_fe_set_handlers(&con->chr, NULL, NULL, NULL, NULL, NULL); - qemu_chr_fe_release(con->chr.chr); - } + qemu_chr_fe_deinit(&con->chr); xen_be_unbind_evtchn(&con->xendev); if (con->sring) { -- cgit v1.2.3