Loading arch/um/include/shared/process.h +0 −5 Original line number Diff line number Diff line Loading @@ -6,9 +6,4 @@ #ifndef __PROCESS_H__ #define __PROCESS_H__ #include <signal.h> extern void sig_handler(int sig, struct sigcontext *sc); extern void alarm_handler(int sig, struct sigcontext *sc); #endif arch/um/os-Linux/internal.h 0 → 100644 +1 −0 Original line number Diff line number Diff line void alarm_handler(int, mcontext_t *); arch/um/os-Linux/signal.c +16 −19 Original line number Diff line number Diff line Loading @@ -26,7 +26,7 @@ void (*sig_info[NSIG])(int, struct uml_pt_regs *) = { [SIGIO] = sigio_handler, [SIGVTALRM] = timer_handler }; static void sig_handler_common(int sig, struct sigcontext *sc) static void sig_handler_common(int sig, mcontext_t *mc) { struct uml_pt_regs r; int save_errno = errno; Loading @@ -34,8 +34,8 @@ static void sig_handler_common(int sig, struct sigcontext *sc) r.is_user = 0; if (sig == SIGSEGV) { /* For segfaults, we want the data from the sigcontext. */ copy_sc(&r, sc); GET_FAULTINFO_FROM_SC(r.faultinfo, sc); copy_sc(&r, (struct sigcontext *)mc); GET_FAULTINFO_FROM_MC(r.faultinfo, mc); } /* enable signals if sig isn't IRQ signal */ Loading @@ -62,7 +62,7 @@ static void sig_handler_common(int sig, struct sigcontext *sc) static int signals_enabled; static unsigned int signals_pending; void sig_handler(int sig, struct sigcontext *sc) void sig_handler(int sig, mcontext_t *mc) { int enabled; Loading @@ -74,23 +74,23 @@ void sig_handler(int sig, struct sigcontext *sc) block_signals(); sig_handler_common(sig, sc); sig_handler_common(sig, mc); set_signals(enabled); } static void real_alarm_handler(struct sigcontext *sc) static void real_alarm_handler(mcontext_t *mc) { struct uml_pt_regs regs; if (sc != NULL) copy_sc(®s, sc); if (mc != NULL) copy_sc(®s, (struct sigcontext *)mc); regs.is_user = 0; unblock_signals(); timer_handler(SIGVTALRM, ®s); } void alarm_handler(int sig, struct sigcontext *sc) void alarm_handler(int sig, mcontext_t *mc) { int enabled; Loading @@ -102,7 +102,7 @@ void alarm_handler(int sig, struct sigcontext *sc) block_signals(); real_alarm_handler(sc); real_alarm_handler(mc); set_signals(enabled); } Loading @@ -121,7 +121,7 @@ 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, mcontext_t *mc) = { [SIGSEGV] = sig_handler, [SIGBUS] = sig_handler, [SIGILL] = sig_handler, Loading @@ -133,8 +133,11 @@ static void (*handlers[_NSIG])(int sig, struct sigcontext *sc) = { [SIGVTALRM] = alarm_handler }; static void handle_signal(int sig, struct sigcontext *sc) static void hard_handler(int sig, siginfo_t *info, void *p) { struct ucontext *uc = p; mcontext_t *mc = &uc->uc_mcontext; unsigned long pending = 1UL << sig; do { Loading @@ -160,7 +163,7 @@ static void handle_signal(int sig, struct sigcontext *sc) while ((sig = ffs(pending)) != 0){ sig--; pending &= ~(1 << sig); (*handlers[sig])(sig, sc); (*handlers[sig])(sig, mc); } /* Loading @@ -174,12 +177,6 @@ static void handle_signal(int sig, struct sigcontext *sc) } while (pending); } static void hard_handler(int sig, siginfo_t *info, void *p) { struct ucontext *uc = p; handle_signal(sig, (struct sigcontext *) &uc->uc_mcontext); } void set_handler(int sig) { struct sigaction action; Loading arch/um/os-Linux/time.c +1 −1 Original line number Diff line number Diff line Loading @@ -10,7 +10,7 @@ #include <sys/time.h> #include "kern_util.h" #include "os.h" #include "process.h" #include "internal.h" int set_interval(void) { Loading arch/um/sys-x86/shared/sysdep/sigcontext_32.h +7 −0 Original line number Diff line number Diff line Loading @@ -22,4 +22,11 @@ (fi).trap_no = SC_TRAPNO(sc); \ } #define GET_FAULTINFO_FROM_MC(fi, mc) \ { \ (fi).cr2 = (mc)->cr2; \ (fi).error_code = (mc)->gregs[REG_ERR]; \ (fi).trap_no = (mc)->gregs[REG_TRAPNO]; \ } #endif Loading
arch/um/include/shared/process.h +0 −5 Original line number Diff line number Diff line Loading @@ -6,9 +6,4 @@ #ifndef __PROCESS_H__ #define __PROCESS_H__ #include <signal.h> extern void sig_handler(int sig, struct sigcontext *sc); extern void alarm_handler(int sig, struct sigcontext *sc); #endif
arch/um/os-Linux/internal.h 0 → 100644 +1 −0 Original line number Diff line number Diff line void alarm_handler(int, mcontext_t *);
arch/um/os-Linux/signal.c +16 −19 Original line number Diff line number Diff line Loading @@ -26,7 +26,7 @@ void (*sig_info[NSIG])(int, struct uml_pt_regs *) = { [SIGIO] = sigio_handler, [SIGVTALRM] = timer_handler }; static void sig_handler_common(int sig, struct sigcontext *sc) static void sig_handler_common(int sig, mcontext_t *mc) { struct uml_pt_regs r; int save_errno = errno; Loading @@ -34,8 +34,8 @@ static void sig_handler_common(int sig, struct sigcontext *sc) r.is_user = 0; if (sig == SIGSEGV) { /* For segfaults, we want the data from the sigcontext. */ copy_sc(&r, sc); GET_FAULTINFO_FROM_SC(r.faultinfo, sc); copy_sc(&r, (struct sigcontext *)mc); GET_FAULTINFO_FROM_MC(r.faultinfo, mc); } /* enable signals if sig isn't IRQ signal */ Loading @@ -62,7 +62,7 @@ static void sig_handler_common(int sig, struct sigcontext *sc) static int signals_enabled; static unsigned int signals_pending; void sig_handler(int sig, struct sigcontext *sc) void sig_handler(int sig, mcontext_t *mc) { int enabled; Loading @@ -74,23 +74,23 @@ void sig_handler(int sig, struct sigcontext *sc) block_signals(); sig_handler_common(sig, sc); sig_handler_common(sig, mc); set_signals(enabled); } static void real_alarm_handler(struct sigcontext *sc) static void real_alarm_handler(mcontext_t *mc) { struct uml_pt_regs regs; if (sc != NULL) copy_sc(®s, sc); if (mc != NULL) copy_sc(®s, (struct sigcontext *)mc); regs.is_user = 0; unblock_signals(); timer_handler(SIGVTALRM, ®s); } void alarm_handler(int sig, struct sigcontext *sc) void alarm_handler(int sig, mcontext_t *mc) { int enabled; Loading @@ -102,7 +102,7 @@ void alarm_handler(int sig, struct sigcontext *sc) block_signals(); real_alarm_handler(sc); real_alarm_handler(mc); set_signals(enabled); } Loading @@ -121,7 +121,7 @@ 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, mcontext_t *mc) = { [SIGSEGV] = sig_handler, [SIGBUS] = sig_handler, [SIGILL] = sig_handler, Loading @@ -133,8 +133,11 @@ static void (*handlers[_NSIG])(int sig, struct sigcontext *sc) = { [SIGVTALRM] = alarm_handler }; static void handle_signal(int sig, struct sigcontext *sc) static void hard_handler(int sig, siginfo_t *info, void *p) { struct ucontext *uc = p; mcontext_t *mc = &uc->uc_mcontext; unsigned long pending = 1UL << sig; do { Loading @@ -160,7 +163,7 @@ static void handle_signal(int sig, struct sigcontext *sc) while ((sig = ffs(pending)) != 0){ sig--; pending &= ~(1 << sig); (*handlers[sig])(sig, sc); (*handlers[sig])(sig, mc); } /* Loading @@ -174,12 +177,6 @@ static void handle_signal(int sig, struct sigcontext *sc) } while (pending); } static void hard_handler(int sig, siginfo_t *info, void *p) { struct ucontext *uc = p; handle_signal(sig, (struct sigcontext *) &uc->uc_mcontext); } void set_handler(int sig) { struct sigaction action; Loading
arch/um/os-Linux/time.c +1 −1 Original line number Diff line number Diff line Loading @@ -10,7 +10,7 @@ #include <sys/time.h> #include "kern_util.h" #include "os.h" #include "process.h" #include "internal.h" int set_interval(void) { Loading
arch/um/sys-x86/shared/sysdep/sigcontext_32.h +7 −0 Original line number Diff line number Diff line Loading @@ -22,4 +22,11 @@ (fi).trap_no = SC_TRAPNO(sc); \ } #define GET_FAULTINFO_FROM_MC(fi, mc) \ { \ (fi).cr2 = (mc)->cr2; \ (fi).error_code = (mc)->gregs[REG_ERR]; \ (fi).trap_no = (mc)->gregs[REG_TRAPNO]; \ } #endif