From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=47214 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OKWtm-0005oV-BQ for qemu-devel@nongnu.org; Fri, 04 Jun 2010 09:25:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OKWtX-0001oM-FL for qemu-devel@nongnu.org; Fri, 04 Jun 2010 09:25:16 -0400 Received: from mx1.redhat.com ([209.132.183.28]:16319) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OKWtX-0001oB-7S for qemu-devel@nongnu.org; Fri, 04 Jun 2010 09:25:07 -0400 From: Jes.Sorensen@redhat.com Date: Fri, 4 Jun 2010 15:24:33 +0200 Message-Id: <1275657882-19268-11-git-send-email-Jes.Sorensen@redhat.com> In-Reply-To: <1275657882-19268-1-git-send-email-Jes.Sorensen@redhat.com> References: <1275657882-19268-1-git-send-email-Jes.Sorensen@redhat.com> Subject: [Qemu-devel] [PATCH 08/17] Move main signal handler setup to os specificfiles. List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: anthony@codemonkey.ws Cc: Jes Sorensen , qemu-devel@nongnu.org From: Jes Sorensen Move main signal handler setup to os specific files. Signed-off-by: Jes Sorensen --- os-posix.c | 27 +++++++++++++++++++++++++++ qemu-os-posix.h | 1 + qemu-os-win32.h | 3 +++ vl.c | 33 +-------------------------------- 4 files changed, 32 insertions(+), 32 deletions(-) diff --git a/os-posix.c b/os-posix.c index 948f662..01dbec2 100644 --- a/os-posix.c +++ b/os-posix.c @@ -26,6 +26,8 @@ #include #include #include +#include +#include /* Needed early for CONFIG_BSD etc. */ #include "config-host.h" @@ -39,3 +41,28 @@ void os_setup_early_signal_handling(void) act.sa_handler = SIG_IGN; sigaction(SIGPIPE, &act, NULL); } + +static void termsig_handler(int signal) +{ + qemu_system_shutdown_request(); +} + +static void sigchld_handler(int signal) +{ + waitpid(-1, NULL, WNOHANG); +} + +void os_setup_signal_handling(void) +{ + struct sigaction act; + + memset(&act, 0, sizeof(act)); + act.sa_handler = termsig_handler; + sigaction(SIGINT, &act, NULL); + sigaction(SIGHUP, &act, NULL); + sigaction(SIGTERM, &act, NULL); + + act.sa_handler = sigchld_handler; + act.sa_flags = SA_NOCLDSTOP; + sigaction(SIGCHLD, &act, NULL); +} diff --git a/qemu-os-posix.h b/qemu-os-posix.h index 2f54d40..41a4360 100644 --- a/qemu-os-posix.h +++ b/qemu-os-posix.h @@ -31,5 +31,6 @@ static inline void os_host_main_loop_wait(int *timeout) } void os_setup_early_signal_handling(void); +void os_setup_signal_handling(void); #endif diff --git a/qemu-os-win32.h b/qemu-os-win32.h index 65e3a9d..ee30ea9 100644 --- a/qemu-os-win32.h +++ b/qemu-os-win32.h @@ -42,4 +42,7 @@ void qemu_del_wait_object(HANDLE handle, WaitObjectFunc *func, void *opaque); static inline void os_setup_early_signal_handling(void) {} void os_host_main_loop_wait(int *timeout); + +static inline void os_setup_signal_handling(void) {} + #endif diff --git a/vl.c b/vl.c index 372f931..fc5e8d8 100644 --- a/vl.c +++ b/vl.c @@ -1986,35 +1986,6 @@ static int balloon_parse(const char *arg) return -1; } -#ifndef _WIN32 - -static void termsig_handler(int signal) -{ - qemu_system_shutdown_request(); -} - -static void sigchld_handler(int signal) -{ - waitpid(-1, NULL, WNOHANG); -} - -static void sighandler_setup(void) -{ - struct sigaction act; - - memset(&act, 0, sizeof(act)); - act.sa_handler = termsig_handler; - sigaction(SIGINT, &act, NULL); - sigaction(SIGHUP, &act, NULL); - sigaction(SIGTERM, &act, NULL); - - act.sa_handler = sigchld_handler; - act.sa_flags = SA_NOCLDSTOP; - sigaction(SIGCHLD, &act, NULL); -} - -#endif - #ifdef _WIN32 /* Look for support files in the same directory as the executable. */ static char *find_datadir(const char *argv0) @@ -3556,10 +3527,8 @@ int main(int argc, char **argv, char **envp) cpu_synchronize_all_post_init(); -#ifndef _WIN32 /* must be after terminal init, SDL library changes signal handlers */ - sighandler_setup(); -#endif + os_setup_signal_handling(); set_numa_modes(); -- 1.6.5.2