summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Bennée <alex.bennee@linaro.org>2016-10-27 16:10:14 +0100
committerPaolo Bonzini <pbonzini@redhat.com>2016-10-31 10:51:17 +0100
commit12e9700d7a926aeb7f97a5d3c368bbe6745be884 (patch)
treec6aa1c11cafffb021d76f33cd8f9cd33bbea0a6d
parentc93bbbefca1795f5afb98ea93b2ada68e53e185b (diff)
downloadqemu-12e9700d7a926aeb7f97a5d3c368bbe6745be884.tar.gz
qemu-12e9700d7a926aeb7f97a5d3c368bbe6745be884.tar.bz2
qemu-12e9700d7a926aeb7f97a5d3c368bbe6745be884.zip
cpus: re-factor out handle_icount_deadline
In preparation for adding a MTTCG thread we re-factor out a bit of what will be common code to handle the QEMU_CLOCK_VIRTUAL expiration. Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Richard Henderson <rth@twiddle.net> Message-Id: <20161027151030.20863-18-alex.bennee@linaro.org> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r--cpus.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/cpus.c b/cpus.c
index cc49902b0f..6f0dc1a121 100644
--- a/cpus.c
+++ b/cpus.c
@@ -1076,6 +1076,18 @@ static int64_t tcg_get_icount_limit(void)
}
}
+static void handle_icount_deadline(void)
+{
+ if (use_icount) {
+ int64_t deadline =
+ qemu_clock_deadline_ns_all(QEMU_CLOCK_VIRTUAL);
+
+ if (deadline == 0) {
+ qemu_clock_notify(QEMU_CLOCK_VIRTUAL);
+ }
+ }
+}
+
static int tcg_cpu_exec(CPUState *cpu)
{
int ret;
@@ -1198,13 +1210,8 @@ static void *qemu_tcg_cpu_thread_fn(void *arg)
/* Pairs with smp_wmb in qemu_cpu_kick. */
atomic_mb_set(&exit_request, 0);
- if (use_icount) {
- int64_t deadline = qemu_clock_deadline_ns_all(QEMU_CLOCK_VIRTUAL);
+ handle_icount_deadline();
- if (deadline == 0) {
- qemu_clock_notify(QEMU_CLOCK_VIRTUAL);
- }
- }
qemu_tcg_wait_io_event(QTAILQ_FIRST(&cpus));
deal_with_unplugged_cpus();
}