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>
This commit is contained in:
parent
c93bbbefca
commit
12e9700d7a
19
cpus.c
19
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)
|
static int tcg_cpu_exec(CPUState *cpu)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
@ -1198,13 +1210,8 @@ static void *qemu_tcg_cpu_thread_fn(void *arg)
|
|||||||
/* Pairs with smp_wmb in qemu_cpu_kick. */
|
/* Pairs with smp_wmb in qemu_cpu_kick. */
|
||||||
atomic_mb_set(&exit_request, 0);
|
atomic_mb_set(&exit_request, 0);
|
||||||
|
|
||||||
if (use_icount) {
|
handle_icount_deadline();
|
||||||
int64_t deadline = qemu_clock_deadline_ns_all(QEMU_CLOCK_VIRTUAL);
|
|
||||||
|
|
||||||
if (deadline == 0) {
|
|
||||||
qemu_clock_notify(QEMU_CLOCK_VIRTUAL);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
qemu_tcg_wait_io_event(QTAILQ_FIRST(&cpus));
|
qemu_tcg_wait_io_event(QTAILQ_FIRST(&cpus));
|
||||||
deal_with_unplugged_cpus();
|
deal_with_unplugged_cpus();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user