qemu-progress: Fix progress printing on SIGUSR1

Since commit a7aae221 ('Switch SIG_IPI to SIGUSR1'), SIGUSR1 is blocked
during startup, breaking the progress report in tools.

This patch reenables the signal when initialising a progress report.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Benoit Canet <benoit@irqsave.net>
This commit is contained in:
Kevin Wolf 2014-01-20 15:06:03 +01:00
parent e69968d472
commit 3c4b4e383e
1 changed files with 10 additions and 0 deletions

View File

@ -82,12 +82,22 @@ static void progress_dummy_init(void)
{ {
#ifdef CONFIG_POSIX #ifdef CONFIG_POSIX
struct sigaction action; struct sigaction action;
sigset_t set;
memset(&action, 0, sizeof(action)); memset(&action, 0, sizeof(action));
sigfillset(&action.sa_mask); sigfillset(&action.sa_mask);
action.sa_handler = sigusr_print; action.sa_handler = sigusr_print;
action.sa_flags = 0; action.sa_flags = 0;
sigaction(SIGUSR1, &action, NULL); sigaction(SIGUSR1, &action, NULL);
/*
* SIGUSR1 is SIG_IPI and gets blocked in qemu_init_main_loop(). In the
* tools that use the progress report SIGUSR1 isn't used in this meaning
* and instead should print the progress, so reenable it.
*/
sigemptyset(&set);
sigaddset(&set, SIGUSR1);
pthread_sigmask(SIG_UNBLOCK, &set, NULL);
#endif #endif
state.print = progress_dummy_print; state.print = progress_dummy_print;