qemu-char: remove use of QEMUTimer in favor of glib idle function
qemu-char is now independent of the QEMU main loop. Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> Signed-off-by: Amit Shah <amit.shah@redhat.com> Message-id: 3cda0bbcfb94912df8a767983a52bb71a4a3231d.1362505276.git.amit.shah@redhat.com Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
8aa33cafc4
commit
9f939df955
@ -71,7 +71,7 @@ struct CharDriverState {
|
||||
void (*chr_guest_open)(struct CharDriverState *chr);
|
||||
void (*chr_guest_close)(struct CharDriverState *chr);
|
||||
void *opaque;
|
||||
QEMUTimer *open_timer;
|
||||
int idle_tag;
|
||||
char *label;
|
||||
char *filename;
|
||||
int opened;
|
||||
|
12
qemu-char.c
12
qemu-char.c
@ -122,20 +122,18 @@ void qemu_chr_be_event(CharDriverState *s, int event)
|
||||
s->chr_event(s->handler_opaque, event);
|
||||
}
|
||||
|
||||
static void qemu_chr_fire_open_event(void *opaque)
|
||||
static gboolean qemu_chr_generic_open_bh(gpointer opaque)
|
||||
{
|
||||
CharDriverState *s = opaque;
|
||||
qemu_chr_be_event(s, CHR_EVENT_OPENED);
|
||||
qemu_free_timer(s->open_timer);
|
||||
s->open_timer = NULL;
|
||||
s->idle_tag = 0;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void qemu_chr_generic_open(CharDriverState *s)
|
||||
{
|
||||
if (s->open_timer == NULL) {
|
||||
s->open_timer = qemu_new_timer_ms(rt_clock,
|
||||
qemu_chr_fire_open_event, s);
|
||||
qemu_mod_timer(s->open_timer, qemu_get_clock_ms(rt_clock) - 1);
|
||||
if (s->idle_tag == 0) {
|
||||
s->idle_tag = g_idle_add(qemu_chr_generic_open_bh, s);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user