mirror of
https://github.com/qemu/qemu.git
synced 2024-11-23 19:03:38 +08:00
vl: delay thread initialization after daemonization
Commitac4119c
(chardev: Use timer instead of bottom-half to postpone open event, 2012-10-12) moved the alarm timer initialization to an earlier point but failed to consider that it depends on qemu_init_main_loop. Later, commit1c53786
(vl: init main loop earlier, 2012-10-30) fixed this, but left -daemonize in two different ways. First, timers need to be reinitialized after forking. Second, the global mutex was being held by the parent, and thus dropped after forking. The first is now fixed using pthread_atfork. For the second part, make sure that the global mutex is not taken before daemonization, and similarly delay qemu_thread_self. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
f9ab4654e3
commit
49cf57281b
@ -128,7 +128,6 @@ int qemu_init_main_loop(void)
|
||||
exit(1);
|
||||
}
|
||||
|
||||
qemu_mutex_lock_iothread();
|
||||
ret = qemu_signal_init();
|
||||
if (ret) {
|
||||
return ret;
|
||||
|
4
vl.c
4
vl.c
@ -3477,7 +3477,6 @@ int main(int argc, char **argv, char **envp)
|
||||
}
|
||||
loc_set_none();
|
||||
|
||||
qemu_init_cpu_loop();
|
||||
if (qemu_init_main_loop()) {
|
||||
fprintf(stderr, "qemu_init_main_loop failed\n");
|
||||
exit(1);
|
||||
@ -3677,6 +3676,9 @@ int main(int argc, char **argv, char **envp)
|
||||
|
||||
os_set_line_buffering();
|
||||
|
||||
qemu_init_cpu_loop();
|
||||
qemu_mutex_lock_iothread();
|
||||
|
||||
#ifdef CONFIG_SPICE
|
||||
/* spice needs the timers to be initialized by this point */
|
||||
qemu_spice_init();
|
||||
|
Loading…
Reference in New Issue
Block a user