Revision aa2c364b
b/cpu-defs.h | ||
---|---|---|
205 | 205 |
uint32_t stopped; /* Artificially stopped */ \ |
206 | 206 |
struct QemuThread *thread; \ |
207 | 207 |
struct QemuCond *halt_cond; \ |
208 |
int thread_kicked; \ |
|
208 | 209 |
struct qemu_work_item *queued_work_first, *queued_work_last; \ |
209 | 210 |
const char *cpu_model_str; \ |
210 | 211 |
struct KVMState *kvm_state; \ |
b/cpus.c | ||
---|---|---|
481 | 481 |
qemu_cond_signal(&qemu_pause_cond); |
482 | 482 |
} |
483 | 483 |
flush_queued_work(env); |
484 |
env->thread_kicked = false; |
|
484 | 485 |
} |
485 | 486 |
|
486 | 487 |
static void qemu_tcg_wait_io_event(void) |
... | ... | |
648 | 649 |
{ |
649 | 650 |
CPUState *env = _env; |
650 | 651 |
qemu_cond_broadcast(env->halt_cond); |
651 |
qemu_thread_signal(env->thread, SIG_IPI); |
|
652 |
if (!env->thread_kicked) { |
|
653 |
qemu_thread_signal(env->thread, SIG_IPI); |
|
654 |
env->thread_kicked = true; |
|
655 |
} |
|
652 | 656 |
} |
653 | 657 |
|
654 | 658 |
int qemu_cpu_self(void *_env) |
Also available in: Unified diff