mux: simplfy muxes_realize_done

mux_chr_event() already send events to all backends, rename it,
export it, and use it from muxes_realize_done. This should help abstract
away mux implementation.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
This commit is contained in:
Marc-André Lureau 2016-12-14 14:40:45 +03:00
parent 6361813527
commit bed3bb9b7e
3 changed files with 11 additions and 11 deletions

View File

@ -114,7 +114,7 @@ static void mux_print_help(Chardev *chr)
}
}
void mux_chr_send_event(MuxChardev *d, int mux_nr, int event)
static void mux_chr_send_event(MuxChardev *d, int mux_nr, int event)
{
CharBackend *be = d->backends[mux_nr];
@ -222,9 +222,9 @@ static void mux_chr_read(void *opaque, const uint8_t *buf, int size)
bool muxes_realized;
static void mux_chr_event(void *opaque, int event)
void mux_chr_send_all_event(Chardev *chr, int event)
{
MuxChardev *d = MUX_CHARDEV(opaque);
MuxChardev *d = MUX_CHARDEV(chr);
int i;
if (!muxes_realized) {
@ -237,6 +237,11 @@ static void mux_chr_event(void *opaque, int event)
}
}
static void mux_chr_event(void *opaque, int event)
{
mux_chr_send_all_event(CHARDEV(opaque), event);
}
static GSource *mux_chr_add_watch(Chardev *s, GIOCondition cond)
{
MuxChardev *d = MUX_CHARDEV(s);

View File

@ -58,6 +58,6 @@ typedef struct MuxChardev {
void mux_chr_set_handlers(Chardev *chr, GMainContext *context);
void mux_set_focus(Chardev *chr, int focus);
void mux_chr_send_event(MuxChardev *d, int mux_nr, int event);
void mux_chr_send_all_event(Chardev *chr, int event);
#endif /* CHAR_MUX_H */

View File

@ -451,22 +451,17 @@ static void muxes_realize_done(Notifier *notifier, void *unused)
{
Chardev *chr;
muxes_realized = true;
QTAILQ_FOREACH(chr, &chardevs, next) {
if (CHARDEV_IS_MUX(chr)) {
MuxChardev *d = MUX_CHARDEV(chr);
int i;
/* send OPENED to all already-attached FEs */
for (i = 0; i < d->mux_cnt; i++) {
mux_chr_send_event(d, i, CHR_EVENT_OPENED);
}
mux_chr_send_all_event(CHARDEV(chr), CHR_EVENT_OPENED);
/* mark mux as OPENED so any new FEs will immediately receive
* OPENED event
*/
qemu_chr_be_event(chr, CHR_EVENT_OPENED);
}
}
muxes_realized = true;
}
static Notifier muxes_realize_notify = {