|
@@ -250,25 +250,24 @@ void init_new_thread_stack(void *sig_stack, void (*usr1_handler)(int))
|
|
if(usr1_handler) set_handler(SIGUSR1, usr1_handler, flags, -1);
|
|
if(usr1_handler) set_handler(SIGUSR1, usr1_handler, flags, -1);
|
|
}
|
|
}
|
|
|
|
|
|
-void init_new_thread_signals(int altstack)
|
|
|
|
|
|
+void init_new_thread_signals(void)
|
|
{
|
|
{
|
|
- int flags = altstack ? SA_ONSTACK : 0;
|
|
|
|
-
|
|
|
|
- set_handler(SIGSEGV, (__sighandler_t) sig_handler, flags,
|
|
|
|
|
|
+ set_handler(SIGSEGV, (__sighandler_t) sig_handler, SA_ONSTACK,
|
|
SIGUSR1, SIGIO, SIGWINCH, SIGALRM, SIGVTALRM, -1);
|
|
SIGUSR1, SIGIO, SIGWINCH, SIGALRM, SIGVTALRM, -1);
|
|
- set_handler(SIGTRAP, (__sighandler_t) sig_handler, flags,
|
|
|
|
|
|
+ set_handler(SIGTRAP, (__sighandler_t) sig_handler, SA_ONSTACK,
|
|
SIGUSR1, SIGIO, SIGWINCH, SIGALRM, SIGVTALRM, -1);
|
|
SIGUSR1, SIGIO, SIGWINCH, SIGALRM, SIGVTALRM, -1);
|
|
- set_handler(SIGFPE, (__sighandler_t) sig_handler, flags,
|
|
|
|
|
|
+ set_handler(SIGFPE, (__sighandler_t) sig_handler, SA_ONSTACK,
|
|
SIGUSR1, SIGIO, SIGWINCH, SIGALRM, SIGVTALRM, -1);
|
|
SIGUSR1, SIGIO, SIGWINCH, SIGALRM, SIGVTALRM, -1);
|
|
- set_handler(SIGILL, (__sighandler_t) sig_handler, flags,
|
|
|
|
|
|
+ set_handler(SIGILL, (__sighandler_t) sig_handler, SA_ONSTACK,
|
|
SIGUSR1, SIGIO, SIGWINCH, SIGALRM, SIGVTALRM, -1);
|
|
SIGUSR1, SIGIO, SIGWINCH, SIGALRM, SIGVTALRM, -1);
|
|
- set_handler(SIGBUS, (__sighandler_t) sig_handler, flags,
|
|
|
|
|
|
+ set_handler(SIGBUS, (__sighandler_t) sig_handler, SA_ONSTACK,
|
|
SIGUSR1, SIGIO, SIGWINCH, SIGALRM, SIGVTALRM, -1);
|
|
SIGUSR1, SIGIO, SIGWINCH, SIGALRM, SIGVTALRM, -1);
|
|
set_handler(SIGUSR2, (__sighandler_t) sig_handler,
|
|
set_handler(SIGUSR2, (__sighandler_t) sig_handler,
|
|
- flags, SIGUSR1, SIGIO, SIGWINCH, SIGALRM, SIGVTALRM, -1);
|
|
|
|
|
|
+ SA_ONSTACK, SIGUSR1, SIGIO, SIGWINCH, SIGALRM, SIGVTALRM,
|
|
|
|
+ -1);
|
|
signal(SIGHUP, SIG_IGN);
|
|
signal(SIGHUP, SIG_IGN);
|
|
|
|
|
|
- init_irq_signals(altstack);
|
|
|
|
|
|
+ init_irq_signals(1);
|
|
}
|
|
}
|
|
|
|
|
|
int run_kernel_thread(int (*fn)(void *), void *arg, void **jmp_ptr)
|
|
int run_kernel_thread(int (*fn)(void *), void *arg, void **jmp_ptr)
|