diff mbox

[08/16] Move main signal handler setup to os specificfiles.

Message ID 1275583692-11678-9-git-send-email-Jes.Sorensen@redhat.com
State New
Headers show

Commit Message

Jes Sorensen June 3, 2010, 4:48 p.m. UTC
From: Jes Sorensen <Jes.Sorensen@redhat.com>

Move main signal handler setup to os specific files.

Signed-off-by: Jes Sorensen <Jes.Sorensen@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(-)

Comments

Richard Henderson June 3, 2010, 8:52 p.m. UTC | #1
On 06/03/2010 09:48 AM, Jes.Sorensen@redhat.com wrote:
> --- 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) {};

Stray ;


r~
Jes Sorensen June 4, 2010, 6:45 a.m. UTC | #2
On 06/03/10 22:52, Richard Henderson wrote:
> On 06/03/2010 09:48 AM, Jes.Sorensen@redhat.com wrote:
>> --- 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) {};
> 
> Stray ;

Sorry, not sure what you mean here?

Jes
Markus Armbruster June 4, 2010, 7:45 a.m. UTC | #3
Jes Sorensen <Jes.Sorensen@redhat.com> writes:

> On 06/03/10 22:52, Richard Henderson wrote:
>> On 06/03/2010 09:48 AM, Jes.Sorensen@redhat.com wrote:
>>> --- 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) {};
>> 
>> Stray ;
>
> Sorry, not sure what you mean here?

There's a stray ';' after the function body's closing brace.  Please
drop it.
diff mbox

Patch

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..4343c6d 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();