[Qemu-devel] [PATCH 08/17] Move main signal handler setup to os specificfiles.
From: Jes Sorensen jes.soren...@redhat.com Move main signal handler setup to os specific files. Signed-off-by: Jes Sorensen jes.soren...@redhat.com Acked-by: Juan Quintela quint...@redhat.com Acked-by: Richard Henderson r...@redhat.com --- os-posix.c | 27 +++ qemu-os-posix.h |2 ++ qemu-os-win32.h |3 +++ vl.c| 33 + 4 files changed, 33 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 unistd.h #include fcntl.h #include signal.h +#include sys/types.h +#include sys/wait.h /* 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 96d1036..ff5adb1 100644 --- a/qemu-os-posix.h +++ b/qemu-os-posix.h @@ -30,4 +30,6 @@ static inline void os_host_main_loop_wait(int *timeout) { } +void os_setup_signal_handling(void); + #endif diff --git a/qemu-os-win32.h b/qemu-os-win32.h index 4d1cac8..e7e2ee3 100644 --- a/qemu-os-win32.h +++ b/qemu-os-win32.h @@ -41,4 +41,7 @@ int qemu_add_wait_object(HANDLE handle, WaitObjectFunc *func, void *opaque); void qemu_del_wait_object(HANDLE handle, WaitObjectFunc *func, void *opaque); 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 a8fcb65..1fd839d 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
[Qemu-devel] [PATCH 08/17] Move main signal handler setup to os specificfiles.
From: Jes Sorensen jes.soren...@redhat.com Move main signal handler setup to os specific files. Signed-off-by: Jes Sorensen jes.soren...@redhat.com --- 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 unistd.h #include fcntl.h #include signal.h +#include sys/types.h +#include sys/wait.h /* 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
[Qemu-devel] [PATCH 08/17] Move main signal handler setup to os specificfiles.
From: Jes Sorensen jes.soren...@redhat.com Move main signal handler setup to os specific files. Signed-off-by: Jes Sorensen jes.soren...@redhat.com --- os-posix.c | 27 +++ qemu-os-posix.h |2 ++ qemu-os-win32.h |3 +++ vl.c| 33 + 4 files changed, 33 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 unistd.h #include fcntl.h #include signal.h +#include sys/types.h +#include sys/wait.h /* 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 96d1036..ff5adb1 100644 --- a/qemu-os-posix.h +++ b/qemu-os-posix.h @@ -30,4 +30,6 @@ static inline void os_host_main_loop_wait(int *timeout) { } +void os_setup_signal_handling(void); + #endif diff --git a/qemu-os-win32.h b/qemu-os-win32.h index 4d1cac8..e7e2ee3 100644 --- a/qemu-os-win32.h +++ b/qemu-os-win32.h @@ -41,4 +41,7 @@ int qemu_add_wait_object(HANDLE handle, WaitObjectFunc *func, void *opaque); void qemu_del_wait_object(HANDLE handle, WaitObjectFunc *func, void *opaque); 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