Make qemu_run_timers and qemu_run_all_timers return progress so that aio_poll etc. can determine whether a timer has been run.
Signed-off-by: Alex Bligh <a...@alex.org.uk> --- include/qemu/timer.h | 4 ++-- qemu-timer.c | 17 +++++++++++------ 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/include/qemu/timer.h b/include/qemu/timer.h index 2f1b609..e0922e6 100644 --- a/include/qemu/timer.h +++ b/include/qemu/timer.h @@ -63,8 +63,8 @@ bool qemu_timer_pending(QEMUTimer *ts); bool qemu_timer_expired(QEMUTimer *timer_head, int64_t current_time); uint64_t qemu_timer_expire_time_ns(QEMUTimer *ts); -void qemu_run_timers(QEMUClock *clock); -void qemu_run_all_timers(void); +bool qemu_run_timers(QEMUClock *clock); +bool qemu_run_all_timers(void); void init_clocks(void); int64_t cpu_get_ticks(void); diff --git a/qemu-timer.c b/qemu-timer.c index 5c576b4..4cba055 100644 --- a/qemu-timer.c +++ b/qemu-timer.c @@ -299,13 +299,14 @@ bool qemu_timer_expired(QEMUTimer *timer_head, int64_t current_time) return qemu_timer_expired_ns(timer_head, current_time * timer_head->scale); } -void qemu_run_timers(QEMUClock *clock) +bool qemu_run_timers(QEMUClock *clock) { QEMUTimer *ts; int64_t current_time; + bool progress = false; if (!clock->enabled) - return; + return progress; current_time = qemu_get_clock_ns(clock); for(;;) { @@ -319,7 +320,9 @@ void qemu_run_timers(QEMUClock *clock) /* run the callback (the timer list can be modified) */ ts->cb(ts->opaque); + progress = true; } + return progress; } int64_t qemu_get_clock_ns(QEMUClock *clock) @@ -371,10 +374,12 @@ uint64_t qemu_timer_expire_time_ns(QEMUTimer *ts) return qemu_timer_pending(ts) ? ts->expire_time : -1; } -void qemu_run_all_timers(void) +bool qemu_run_all_timers(void) { /* vm time timers */ - qemu_run_timers(vm_clock); - qemu_run_timers(rt_clock); - qemu_run_timers(host_clock); + bool progress = false; + progress |= qemu_run_timers(vm_clock); + progress |= qemu_run_timers(rt_clock); + progress |= qemu_run_timers(host_clock); + return progress; } -- 1.7.9.5