Initialize the semaphore before creating the thread, factor out as dummy_thread_precreate().
Signed-off-by: Philippe Mathieu-Daudé <phi...@linaro.org> Reviewed-by: Richard Henderson <richard.hender...@linaro.org> --- accel/dummy-cpus.h | 1 + accel/dummy-cpus.c | 12 +++++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/accel/dummy-cpus.h b/accel/dummy-cpus.h index d18dd0fdc51..c3af710ee8c 100644 --- a/accel/dummy-cpus.h +++ b/accel/dummy-cpus.h @@ -9,6 +9,7 @@ #ifndef ACCEL_DUMMY_CPUS_H #define ACCEL_DUMMY_CPUS_H +void dummy_thread_precreate(CPUState *cpu); void dummy_start_vcpu_thread(CPUState *cpu); #endif diff --git a/accel/dummy-cpus.c b/accel/dummy-cpus.c index 03cfc0fa01e..2cbc3fecc93 100644 --- a/accel/dummy-cpus.c +++ b/accel/dummy-cpus.c @@ -65,15 +65,21 @@ static void *dummy_cpu_thread_fn(void *arg) return NULL; } +void dummy_thread_precreate(CPUState *cpu) +{ +#ifdef _WIN32 + qemu_sem_init(&cpu->sem, 0); +#endif +} + void dummy_start_vcpu_thread(CPUState *cpu) { char thread_name[VCPU_THREAD_NAME_SIZE]; + dummy_thread_precreate(cpu); + snprintf(thread_name, VCPU_THREAD_NAME_SIZE, "CPU %d/DUMMY", cpu->cpu_index); qemu_thread_create(cpu->thread, thread_name, dummy_cpu_thread_fn, cpu, QEMU_THREAD_JOINABLE); -#ifdef _WIN32 - qemu_sem_init(&cpu->sem, 0); -#endif } -- 2.49.0