Loading arch/um/include/shared/os.h +1 −1 Original line number Diff line number Diff line Loading @@ -225,7 +225,7 @@ extern char *get_umid(void); extern void timer_init(void); extern void set_sigstack(void *sig_stack, int size); extern void remove_sigstack(void); extern void set_handler(int sig, void (*handler)(int)); extern void set_handler(int sig); extern int change_sig(int signal, int on); extern void block_signals(void); extern void unblock_signals(void); Loading arch/um/os-Linux/process.c +6 −6 Original line number Diff line number Diff line Loading @@ -235,13 +235,13 @@ out: void init_new_thread_signals(void) { set_handler(SIGSEGV, (__sighandler_t) sig_handler); set_handler(SIGTRAP, (__sighandler_t) sig_handler); set_handler(SIGFPE, (__sighandler_t) sig_handler); set_handler(SIGILL, (__sighandler_t) sig_handler); set_handler(SIGBUS, (__sighandler_t) sig_handler); set_handler(SIGSEGV); set_handler(SIGTRAP); set_handler(SIGFPE); set_handler(SIGILL); set_handler(SIGBUS); signal(SIGHUP, SIG_IGN); set_handler(SIGIO, (__sighandler_t) sig_handler); set_handler(SIGIO); signal(SIGWINCH, SIG_IGN); signal(SIGTERM, SIG_DFL); } Loading arch/um/os-Linux/signal.c +13 −4 Original line number Diff line number Diff line Loading @@ -111,7 +111,7 @@ void alarm_handler(int sig, struct sigcontext *sc) void timer_init(void) { set_handler(SIGVTALRM, (__sighandler_t) alarm_handler); set_handler(SIGVTALRM); } void set_sigstack(void *sig_stack, int size) Loading @@ -124,7 +124,17 @@ void set_sigstack(void *sig_stack, int size) panic("enabling signal stack failed, errno = %d\n", errno); } static void (*handlers[_NSIG])(int sig, struct sigcontext *sc); static void (*handlers[_NSIG])(int sig, struct sigcontext *sc) = { [SIGSEGV] = sig_handler, [SIGBUS] = sig_handler, [SIGILL] = sig_handler, [SIGFPE] = sig_handler, [SIGTRAP] = sig_handler, [SIGIO] = sig_handler, [SIGWINCH] = sig_handler, [SIGVTALRM] = alarm_handler }; static void handle_signal(int sig, struct sigcontext *sc) { Loading Loading @@ -173,13 +183,12 @@ static void hard_handler(int sig, siginfo_t *info, void *p) handle_signal(sig, (struct sigcontext *) &uc->uc_mcontext); } void set_handler(int sig, void (*handler)(int)) void set_handler(int sig) { struct sigaction action; int flags = SA_SIGINFO | SA_ONSTACK; sigset_t sig_mask; handlers[sig] = (void (*)(int, struct sigcontext *)) handler; action.sa_sigaction = hard_handler; /* block irq ones */ Loading arch/um/os-Linux/skas/process.c +1 −1 Original line number Diff line number Diff line Loading @@ -659,7 +659,7 @@ int start_idle_thread(void *stack, jmp_buf *switch_buf) { int n; set_handler(SIGWINCH, (__sighandler_t) sig_handler); set_handler(SIGWINCH); /* * Can't use UML_SETJMP or UML_LONGJMP here because they save Loading Loading
arch/um/include/shared/os.h +1 −1 Original line number Diff line number Diff line Loading @@ -225,7 +225,7 @@ extern char *get_umid(void); extern void timer_init(void); extern void set_sigstack(void *sig_stack, int size); extern void remove_sigstack(void); extern void set_handler(int sig, void (*handler)(int)); extern void set_handler(int sig); extern int change_sig(int signal, int on); extern void block_signals(void); extern void unblock_signals(void); Loading
arch/um/os-Linux/process.c +6 −6 Original line number Diff line number Diff line Loading @@ -235,13 +235,13 @@ out: void init_new_thread_signals(void) { set_handler(SIGSEGV, (__sighandler_t) sig_handler); set_handler(SIGTRAP, (__sighandler_t) sig_handler); set_handler(SIGFPE, (__sighandler_t) sig_handler); set_handler(SIGILL, (__sighandler_t) sig_handler); set_handler(SIGBUS, (__sighandler_t) sig_handler); set_handler(SIGSEGV); set_handler(SIGTRAP); set_handler(SIGFPE); set_handler(SIGILL); set_handler(SIGBUS); signal(SIGHUP, SIG_IGN); set_handler(SIGIO, (__sighandler_t) sig_handler); set_handler(SIGIO); signal(SIGWINCH, SIG_IGN); signal(SIGTERM, SIG_DFL); } Loading
arch/um/os-Linux/signal.c +13 −4 Original line number Diff line number Diff line Loading @@ -111,7 +111,7 @@ void alarm_handler(int sig, struct sigcontext *sc) void timer_init(void) { set_handler(SIGVTALRM, (__sighandler_t) alarm_handler); set_handler(SIGVTALRM); } void set_sigstack(void *sig_stack, int size) Loading @@ -124,7 +124,17 @@ void set_sigstack(void *sig_stack, int size) panic("enabling signal stack failed, errno = %d\n", errno); } static void (*handlers[_NSIG])(int sig, struct sigcontext *sc); static void (*handlers[_NSIG])(int sig, struct sigcontext *sc) = { [SIGSEGV] = sig_handler, [SIGBUS] = sig_handler, [SIGILL] = sig_handler, [SIGFPE] = sig_handler, [SIGTRAP] = sig_handler, [SIGIO] = sig_handler, [SIGWINCH] = sig_handler, [SIGVTALRM] = alarm_handler }; static void handle_signal(int sig, struct sigcontext *sc) { Loading Loading @@ -173,13 +183,12 @@ static void hard_handler(int sig, siginfo_t *info, void *p) handle_signal(sig, (struct sigcontext *) &uc->uc_mcontext); } void set_handler(int sig, void (*handler)(int)) void set_handler(int sig) { struct sigaction action; int flags = SA_SIGINFO | SA_ONSTACK; sigset_t sig_mask; handlers[sig] = (void (*)(int, struct sigcontext *)) handler; action.sa_sigaction = hard_handler; /* block irq ones */ Loading
arch/um/os-Linux/skas/process.c +1 −1 Original line number Diff line number Diff line Loading @@ -659,7 +659,7 @@ int start_idle_thread(void *stack, jmp_buf *switch_buf) { int n; set_handler(SIGWINCH, (__sighandler_t) sig_handler); set_handler(SIGWINCH); /* * Can't use UML_SETJMP or UML_LONGJMP here because they save Loading