On 05/29/2011 04:50 PM, Andreas Färber wrote:
BeOS and Haiku don't define SIGIO. When undefined, it won't arrive
and doesn't need to be blocked.
Signed-off-by: Andreas Färber<andreas.faer...@web.de>
Anything to do with signal masks is never a trivial patch BTW...
But I actually think explicit handling of SIGIO is unneeded. I think
this is a hold over from the pre-I/O thread days where we selectively
set SIGIO on certain file descriptors to make sure that when an IO fd
became readable, we received a signal to break out of the KVM emulation
loop.
Can the folks on CC confirm/deny?
I can't see any use of SIGIO in the current source tree.
Regards,
Anthony Liguori
---
cpus.c | 8 ++++++++
1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/cpus.c b/cpus.c
index 1fc34b7..42af291 100644
--- a/cpus.c
+++ b/cpus.c
@@ -395,7 +395,9 @@ static int qemu_signal_init(void)
pthread_sigmask(SIG_UNBLOCK,&set, NULL);
sigemptyset(&set);
+#ifdef SIGIO
sigaddset(&set, SIGIO);
+#endif
sigaddset(&set, SIGALRM);
sigaddset(&set, SIG_IPI);
sigaddset(&set, SIGBUS);
@@ -408,7 +410,9 @@ static int qemu_signal_init(void)
* We need to process timer signals synchronously to avoid a race
* between exit_request check and KVM vcpu entry.
*/
+#ifdef SIGIO
sigaddset(&set, SIGIO);
+#endif
sigaddset(&set, SIGALRM);
}
#endif
@@ -449,12 +453,16 @@ static void qemu_kvm_init_cpu_signals(CPUState *env)
#else
sigemptyset(&set);
sigaddset(&set, SIG_IPI);
+#ifdef SIGIO
sigaddset(&set, SIGIO);
+#endif
sigaddset(&set, SIGALRM);
pthread_sigmask(SIG_BLOCK,&set, NULL);
pthread_sigmask(SIG_BLOCK, NULL,&set);
+#ifdef SIGIO
sigdelset(&set, SIGIO);
+#endif
sigdelset(&set, SIGALRM);
#endif
sigdelset(&set, SIG_IPI);