cpus: create qemu_in_vcpu_thread()

Old code used !io_thread to know if a thread was an vcpu or not.  That
fails when we introduce the iothread.

Signed-off-by: Juan Quintela <quintela@redhat.com>
This commit is contained in:
Juan Quintela 2012-09-18 16:30:11 +02:00
parent a2b4135124
commit aa723c2314
1 changed files with 7 additions and 2 deletions

9
cpus.c
View File

@ -898,6 +898,11 @@ int qemu_cpu_is_self(void *_env)
return qemu_thread_is_self(cpu->thread); return qemu_thread_is_self(cpu->thread);
} }
static bool qemu_in_vcpu_thread(void)
{
return cpu_single_env && qemu_cpu_is_self(cpu_single_env);
}
void qemu_mutex_lock_iothread(void) void qemu_mutex_lock_iothread(void)
{ {
if (!tcg_enabled()) { if (!tcg_enabled()) {
@ -943,7 +948,7 @@ void pause_all_vcpus(void)
penv = penv->next_cpu; penv = penv->next_cpu;
} }
if (!qemu_thread_is_self(&io_thread)) { if (qemu_in_vcpu_thread()) {
cpu_stop_current(); cpu_stop_current();
if (!kvm_enabled()) { if (!kvm_enabled()) {
while (penv) { while (penv) {
@ -1060,7 +1065,7 @@ void cpu_stop_current(void)
void vm_stop(RunState state) void vm_stop(RunState state)
{ {
if (!qemu_thread_is_self(&io_thread)) { if (qemu_in_vcpu_thread()) {
qemu_system_vmstop_request(state); qemu_system_vmstop_request(state);
/* /*
* FIXME: should not return to device code in case * FIXME: should not return to device code in case