diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2016-08-31 16:56:04 +0200 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2016-09-27 11:57:30 +0200 |
commit | ab129972c8b41e15b0521895a46fd9c752b68a5e (patch) | |
tree | 2333219f1b6366ad23aa0b1e3ffa9c9ee2d5c0fe /cpus.c | |
parent | 0e55539c076a61b0b10a1aea1158fc20fb159d99 (diff) | |
download | qemu-ab129972c8b41e15b0521895a46fd9c752b68a5e.tar.gz qemu-ab129972c8b41e15b0521895a46fd9c752b68a5e.tar.bz2 qemu-ab129972c8b41e15b0521895a46fd9c752b68a5e.zip |
cpus-common: move exclusive work infrastructure from linux-user
This will serve as the base for async_safe_run_on_cpu. Because
start_exclusive uses CPU_FOREACH, merge exclusive_lock with
qemu_cpu_list_lock: together with a call to exclusive_idle (via
cpu_exec_start/end) in cpu_list_add, this protects exclusive work
against concurrent CPU addition and removal.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Richard Henderson <rth@twiddle.net>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'cpus.c')
-rw-r--r-- | cpus.c | 2 |
1 files changed, 2 insertions, 0 deletions
@@ -1457,7 +1457,9 @@ static int tcg_cpu_exec(CPUState *cpu) cpu->icount_decr.u16.low = decr; cpu->icount_extra = count; } + cpu_exec_start(cpu); ret = cpu_exec(cpu); + cpu_exec_end(cpu); #ifdef CONFIG_PROFILER tcg_time += profile_getclock() - ti; #endif |