diff options
Diffstat (limited to 'arch/um/os-Linux/process.c')
| -rw-r--r-- | arch/um/os-Linux/process.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/arch/um/os-Linux/process.c b/arch/um/os-Linux/process.c index b98d3ca2cd1b..ff203625a4bd 100644 --- a/arch/um/os-Linux/process.c +++ b/arch/um/os-Linux/process.c | |||
| @@ -7,7 +7,6 @@ | |||
| 7 | #include <stdio.h> | 7 | #include <stdio.h> |
| 8 | #include <errno.h> | 8 | #include <errno.h> |
| 9 | #include <signal.h> | 9 | #include <signal.h> |
| 10 | #include <setjmp.h> | ||
| 11 | #include <linux/unistd.h> | 10 | #include <linux/unistd.h> |
| 12 | #include <sys/mman.h> | 11 | #include <sys/mman.h> |
| 13 | #include <sys/wait.h> | 12 | #include <sys/wait.h> |
| @@ -247,7 +246,17 @@ void init_new_thread_stack(void *sig_stack, void (*usr1_handler)(int)) | |||
| 247 | set_sigstack(sig_stack, pages * page_size()); | 246 | set_sigstack(sig_stack, pages * page_size()); |
| 248 | flags = SA_ONSTACK; | 247 | flags = SA_ONSTACK; |
| 249 | } | 248 | } |
| 250 | if(usr1_handler) set_handler(SIGUSR1, usr1_handler, flags, -1); | 249 | if(usr1_handler){ |
| 250 | struct sigaction sa; | ||
| 251 | |||
| 252 | sa.sa_handler = usr1_handler; | ||
| 253 | sigemptyset(&sa.sa_mask); | ||
| 254 | sa.sa_flags = flags; | ||
| 255 | sa.sa_restorer = NULL; | ||
| 256 | if(sigaction(SIGUSR1, &sa, NULL) < 0) | ||
| 257 | panic("init_new_thread_stack - sigaction failed - " | ||
| 258 | "errno = %d\n", errno); | ||
| 259 | } | ||
| 251 | } | 260 | } |
| 252 | 261 | ||
| 253 | void init_new_thread_signals(void) | 262 | void init_new_thread_signals(void) |
