@ -1117,8 +1117,13 @@ void resume_all_vcpus(void)
}
}
/* For temporary buffers for forming a name */
# define VCPU_THREAD_NAME_SIZE 16
static void qemu_tcg_init_vcpu ( CPUState * cpu )
{
char thread_name [ VCPU_THREAD_NAME_SIZE ] ;
tcg_cpu_address_space_init ( cpu , cpu - > as ) ;
/* share a single thread for all cpus with TCG */
@ -1127,8 +1132,10 @@ static void qemu_tcg_init_vcpu(CPUState *cpu)
cpu - > halt_cond = g_malloc0 ( sizeof ( QemuCond ) ) ;
qemu_cond_init ( cpu - > halt_cond ) ;
tcg_halt_cond = cpu - > halt_cond ;
qemu_thread_create ( cpu - > thread , qemu_tcg_cpu_thread_fn , cpu ,
QEMU_THREAD_JOINABLE ) ;
snprintf ( thread_name , VCPU_THREAD_NAME_SIZE , " CPU %d/TCG " ,
cpu - > cpu_index ) ;
qemu_thread_create ( cpu - > thread , thread_name , qemu_tcg_cpu_thread_fn ,
cpu , QEMU_THREAD_JOINABLE ) ;
# ifdef _WIN32
cpu - > hThread = qemu_thread_get_handle ( cpu - > thread ) ;
# endif
@ -1144,11 +1151,15 @@ static void qemu_tcg_init_vcpu(CPUState *cpu)
static void qemu_kvm_start_vcpu ( CPUState * cpu )
{
char thread_name [ VCPU_THREAD_NAME_SIZE ] ;
cpu - > thread = g_malloc0 ( sizeof ( QemuThread ) ) ;
cpu - > halt_cond = g_malloc0 ( sizeof ( QemuCond ) ) ;
qemu_cond_init ( cpu - > halt_cond ) ;
qemu_thread_create ( cpu - > thread , qemu_kvm_cpu_thread_fn , cpu ,
QEMU_THREAD_JOINABLE ) ;
snprintf ( thread_name , VCPU_THREAD_NAME_SIZE , " CPU %d/KVM " ,
cpu - > cpu_index ) ;
qemu_thread_create ( cpu - > thread , thread_name , qemu_kvm_cpu_thread_fn ,
cpu , QEMU_THREAD_JOINABLE ) ;
while ( ! cpu - > created ) {
qemu_cond_wait ( & qemu_cpu_cond , & qemu_global_mutex ) ;
}
@ -1156,10 +1167,14 @@ static void qemu_kvm_start_vcpu(CPUState *cpu)
static void qemu_dummy_start_vcpu ( CPUState * cpu )
{
char thread_name [ VCPU_THREAD_NAME_SIZE ] ;
cpu - > thread = g_malloc0 ( sizeof ( QemuThread ) ) ;
cpu - > halt_cond = g_malloc0 ( sizeof ( QemuCond ) ) ;
qemu_cond_init ( cpu - > halt_cond ) ;
qemu_thread_create ( cpu - > thread , qemu_dummy_cpu_thread_fn , cpu ,
snprintf ( thread_name , VCPU_THREAD_NAME_SIZE , " CPU %d/DUMMY " ,
cpu - > cpu_index ) ;
qemu_thread_create ( cpu - > thread , thread_name , qemu_dummy_cpu_thread_fn , cpu ,
QEMU_THREAD_JOINABLE ) ;
while ( ! cpu - > created ) {
qemu_cond_wait ( & qemu_cpu_cond , & qemu_global_mutex ) ;