From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=49561 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PrRNP-0004kN-LB for qemu-devel@nongnu.org; Mon, 21 Feb 2011 03:44:16 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PrRNO-0000RH-5u for qemu-devel@nongnu.org; Mon, 21 Feb 2011 03:44:15 -0500 Received: from mail-wy0-f173.google.com ([74.125.82.173]:61006) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PrRNN-0000I2-Uv for qemu-devel@nongnu.org; Mon, 21 Feb 2011 03:44:14 -0500 Received: by mail-wy0-f173.google.com with SMTP id 29so1150726wyb.4 for ; Mon, 21 Feb 2011 00:44:13 -0800 (PST) Sender: Paolo Bonzini From: Paolo Bonzini Date: Mon, 21 Feb 2011 09:43:37 +0100 Message-Id: <1298277820-8817-19-git-send-email-pbonzini@redhat.com> In-Reply-To: <1298277820-8817-1-git-send-email-pbonzini@redhat.com> References: <1298277820-8817-1-git-send-email-pbonzini@redhat.com> Subject: [Qemu-devel] [PATCH 18/21] move blocking of signals to qemu_signalfd_init List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org This makes it easier to add a Win32 stub. The patch does that, too. Signed-off-by: Paolo Bonzini --- cpus.c | 87 ++++++++++++++++++++++++++------------------------------------- 1 files changed, 36 insertions(+), 51 deletions(-) diff --git a/cpus.c b/cpus.c index 1b6893d..5bb95d8 100644 --- a/cpus.c +++ b/cpus.c @@ -346,11 +346,37 @@ static void sigfd_handler(void *opaque) } } -static int qemu_signalfd_init(sigset_t mask) +static int qemu_signalfd_init(void) { int sigfd; + sigset_t set; - sigfd = qemu_signalfd(&mask); +#ifdef CONFIG_IOTHREAD + /* SIGUSR2 used by posix-aio-compat.c */ + sigemptyset(&set); + sigaddset(&set, SIGUSR2); + pthread_sigmask(SIG_UNBLOCK, &set, NULL); + + sigemptyset(&set); + sigaddset(&set, SIGIO); + sigaddset(&set, SIGALRM); + sigaddset(&set, SIG_IPI); + sigaddset(&set, SIGBUS); + pthread_sigmask(SIG_BLOCK, &set, NULL); +#else + sigemptyset(&set); + sigaddset(&set, SIGBUS); + if (kvm_enabled()) { + /* + * We need to process timer signals synchronously to avoid a race + * between exit_request check and KVM vcpu entry. + */ + sigaddset(&set, SIGIO); + sigaddset(&set, SIGALRM); + } +#endif + + sigfd = qemu_signalfd(&set); if (sigfd == -1) { fprintf(stderr, "failed to create signalfd\n"); return -errno; @@ -438,6 +464,12 @@ static void qemu_event_increment(void) static void qemu_kvm_eat_signals(CPUState *env) { } + +static int qemu_signalfd_init(void) +{ + return 0; +} + #endif /* _WIN32 */ #ifndef CONFIG_IOTHREAD @@ -471,39 +503,14 @@ static void qemu_kvm_init_cpu_signals(CPUState *env) #endif } -#ifndef _WIN32 -static sigset_t block_synchronous_signals(void) -{ - sigset_t set; - - sigemptyset(&set); - sigaddset(&set, SIGBUS); - if (kvm_enabled()) { - /* - * We need to process timer signals synchronously to avoid a race - * between exit_request check and KVM vcpu entry. - */ - sigaddset(&set, SIGIO); - sigaddset(&set, SIGALRM); - } - - return set; -} -#endif - int qemu_init_main_loop(void) { -#ifndef _WIN32 - sigset_t blocked_signals; int ret; - blocked_signals = block_synchronous_signals(); - - ret = qemu_signalfd_init(blocked_signals); + ret = qemu_signalfd_init(); if (ret) { return ret; } -#endif qemu_init_sigbus(); @@ -651,35 +658,13 @@ static void qemu_tcg_init_cpu_signals(void) pthread_sigmask(SIG_UNBLOCK, &set, NULL); } -static sigset_t block_io_signals(void) -{ - sigset_t set; - - /* SIGUSR2 used by posix-aio-compat.c */ - sigemptyset(&set); - sigaddset(&set, SIGUSR2); - pthread_sigmask(SIG_UNBLOCK, &set, NULL); - - sigemptyset(&set); - sigaddset(&set, SIGIO); - sigaddset(&set, SIGALRM); - sigaddset(&set, SIG_IPI); - sigaddset(&set, SIGBUS); - pthread_sigmask(SIG_BLOCK, &set, NULL); - - return set; -} - int qemu_init_main_loop(void) { int ret; - sigset_t blocked_signals; qemu_init_sigbus(); - blocked_signals = block_io_signals(); - - ret = qemu_signalfd_init(blocked_signals); + ret = qemu_signalfd_init(); if (ret) { return ret; } -- 1.7.3.5