diff options
author | Anthony Liguori <aliguori@us.ibm.com> | 2013-03-05 23:21:27 +0530 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2013-03-08 13:57:15 -0600 |
commit | 9f939df955a4152aad69a19a77e0898631bb2c18 (patch) | |
tree | e8c0a3e63a8eb4f45148b62c22382b94de5eeffb | |
parent | 8aa33cafc41a0fe8549d1dbcc65b75c31112dea8 (diff) | |
download | qemu-9f939df955a4152aad69a19a77e0898631bb2c18.tar.gz qemu-9f939df955a4152aad69a19a77e0898631bb2c18.tar.bz2 qemu-9f939df955a4152aad69a19a77e0898631bb2c18.zip |
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>
-rw-r--r-- | include/char/char.h | 2 | ||||
-rw-r--r-- | qemu-char.c | 12 |
2 files changed, 6 insertions, 8 deletions
diff --git a/include/char/char.h b/include/char/char.h index 09ac4014dd..e8b781cd5e 100644 --- a/include/char/char.h +++ b/include/char/char.h @@ -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; diff --git a/qemu-char.c b/qemu-char.c index 6dba943667..2c7c929085 100644 --- a/qemu-char.c +++ b/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); } } |