[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 16/38] char: fold qemu_chr_set_handlers in qemu_chr_
From: |
Marc-André Lureau |
Subject: |
[Qemu-devel] [PATCH 16/38] char: fold qemu_chr_set_handlers in qemu_chr_fe_set_handlers |
Date: |
Sat, 22 Oct 2016 12:52:56 +0300 |
qemu_chr_add_handlers*() have been removed in previous change, so the
common qemu_chr_set_handlers() is no longer needed.
Signed-off-by: Marc-André Lureau <address@hidden>
---
qemu-char.c | 78 ++++++++++++++++++++++-----------------------------
include/sysemu/char.h | 3 +-
2 files changed, 35 insertions(+), 46 deletions(-)
diff --git a/qemu-char.c b/qemu-char.c
index b10db09..1ed69d0 100644
--- a/qemu-char.c
+++ b/qemu-char.c
@@ -467,46 +467,6 @@ void qemu_chr_fe_printf(CharBackend *be, const char *fmt,
...)
}
static void remove_fd_in_watch(CharDriverState *chr);
-
-static void
-qemu_chr_set_handlers(CharBackend *be,
- IOCanReadHandler *fd_can_read,
- IOReadHandler *fd_read,
- IOEventHandler *fd_event,
- void *opaque,
- GMainContext *context)
-{
- CharDriverState *s = be->chr;
- int fe_open;
-
- if (!opaque && !fd_can_read && !fd_read && !fd_event) {
- fe_open = 0;
- remove_fd_in_watch(s);
- } else {
- fe_open = 1;
- }
- s->chr_can_read = fd_can_read;
- s->chr_read = fd_read;
- s->chr_event = fd_event;
- s->handler_opaque = opaque;
- if (s->chr_update_read_handler) {
- s->chr_update_read_handler(s, context, be->tag);
- }
-
- if (!s->explicit_fe_open) {
- qemu_chr_fe_set_open(be, fe_open);
- }
-
- /* We're connecting to an already opened device, so let's make sure we
- also get the open event */
- if (fe_open) {
- qemu_chr_fe_take_focus(be);
- if (s->be_open) {
- qemu_chr_be_generic_open(s);
- }
- }
-}
-
static int mux_chr_new_handler_tag(CharDriverState *chr, Error **errp);
static void mux_chr_set_handlers(CharDriverState *chr, GMainContext *context);
static void mux_set_focus(MuxDriver *d, int focus);
@@ -936,17 +896,45 @@ void qemu_chr_fe_set_handlers(CharBackend *b,
void *opaque,
GMainContext *context)
{
+ CharDriverState *s;
+ int fe_open;
+
assert(b);
- if (!b->chr) {
+ s = b->chr;
+ if (!s) {
return;
}
- qemu_chr_set_handlers(b, fd_can_read, fd_read,
- fd_event, opaque, context);
+ if (!opaque && !fd_can_read && !fd_read && !fd_event) {
+ fe_open = 0;
+ remove_fd_in_watch(s);
+ } else {
+ fe_open = 1;
+ }
+ s->chr_can_read = fd_can_read;
+ s->chr_read = fd_read;
+ s->chr_event = fd_event;
+ s->handler_opaque = opaque;
+ if (s->chr_update_read_handler) {
+ s->chr_update_read_handler(s, context, b->tag);
+ }
+
+ if (!s->explicit_fe_open) {
+ qemu_chr_fe_set_open(b, fe_open);
+ }
- if (b->chr->is_mux) {
- mux_chr_set_handlers(b->chr, context);
+ if (fe_open) {
+ qemu_chr_fe_take_focus(b);
+ /* We're connecting to an already opened device, so let's make sure we
+ also get the open event */
+ if (s->be_open) {
+ qemu_chr_be_generic_open(s);
+ }
+ }
+
+ if (s->is_mux) {
+ mux_chr_set_handlers(s, context);
}
}
diff --git a/include/sysemu/char.h b/include/sysemu/char.h
index 0bd7506..6737a8a 100644
--- a/include/sysemu/char.h
+++ b/include/sysemu/char.h
@@ -460,7 +460,8 @@ CharDriverState *qemu_chr_fe_get_driver(CharBackend *be);
* @opaque: an opaque pointer for the callbacks
* @context: a main loop context or NULL for the default
*
- * Set the front end char handlers.
+ * Set the front end char handlers. The front end takes the focus if
+ * any of the handler is non-NULL.
*/
void qemu_chr_fe_set_handlers(CharBackend *b,
IOCanReadHandler *fd_can_read,
--
2.10.0
- [Qemu-devel] [PATCH 06/38] char: remove init callback, (continued)
- [Qemu-devel] [PATCH 06/38] char: remove init callback, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 08/38] mux: split mux_chr_update_read_handler(), Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 10/38] char: start converting mux driver to use CharBackend, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 09/38] char: introduce CharBackend, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 11/38] char: replace PROP_CHR with CharBackend, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 14/38] colo: claim in find_and_check_chardev, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 12/38] char: remaining switch to CharBackend in frontend, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 13/38] char: rename some frontend functions, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 16/38] char: fold qemu_chr_set_handlers in qemu_chr_fe_set_handlers,
Marc-André Lureau <=
- [Qemu-devel] [PATCH 17/38] vhost-user: only initialize queue 0 CharBackend, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 15/38] char: use qemu_chr_fe* functions with CharBackend argument, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 18/38] char: replace qemu_chr_claim/release with qemu_chr_fe_init/deinit, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 19/38] char: make some qemu_chr_fe skip if no driver, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 20/38] tests: start chardev unit tests, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 21/38] char: move front end handlers in CharBackend, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 22/38] char: rename chr_close/chr_free, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 23/38] char: remove explicit_fe_open, use a set_handlers argument, Marc-André Lureau, 2016/10/22