Skip to content

Commit

Permalink
mux: simplfy muxes_realize_done
Browse files Browse the repository at this point in the history
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 <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
  • Loading branch information
elmarco committed May 4, 2017
1 parent 6361813 commit bed3bb9
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 11 deletions.
11 changes: 8 additions & 3 deletions chardev/char-mux.c
Original file line number Diff line number Diff line change
Expand Up @@ -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];

Expand Down Expand Up @@ -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) {
Expand All @@ -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);
Expand Down
2 changes: 1 addition & 1 deletion chardev/char-mux.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
9 changes: 2 additions & 7 deletions chardev/char.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 = {
Expand Down

0 comments on commit bed3bb9

Please sign in to comment.