mirror of
https://git.proxmox.com/git/qemu
synced 2025-06-15 11:04:11 +00:00
qemu-timer: reinitialize timers after fork
Timers are not inherited by the child of a fork(2), so just use pthread_atfork to reinstate them after daemonize. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
c166cb72f1
commit
c8122c35e6
14
qemu-timer.c
14
qemu-timer.c
@ -742,6 +742,17 @@ static void quit_timers(void)
|
|||||||
t->stop(t);
|
t->stop(t);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void reinit_timers(void)
|
||||||
|
{
|
||||||
|
struct qemu_alarm_timer *t = alarm_timer;
|
||||||
|
t->stop(t);
|
||||||
|
if (t->start(t)) {
|
||||||
|
fprintf(stderr, "Internal timer error: aborting\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
qemu_rearm_alarm_timer(t);
|
||||||
|
}
|
||||||
|
|
||||||
int init_timer_alarm(void)
|
int init_timer_alarm(void)
|
||||||
{
|
{
|
||||||
struct qemu_alarm_timer *t = NULL;
|
struct qemu_alarm_timer *t = NULL;
|
||||||
@ -765,6 +776,9 @@ int init_timer_alarm(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
atexit(quit_timers);
|
atexit(quit_timers);
|
||||||
|
#ifdef CONFIG_POSIX
|
||||||
|
pthread_atfork(NULL, NULL, reinit_timers);
|
||||||
|
#endif
|
||||||
alarm_timer = t;
|
alarm_timer = t;
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user