void sig_handler(ARCH_SIGHDLR_PARAM) { struct sigcontext *sc; int enabled; /* Must be the first thing that this handler does - x86_64 stores * the sigcontext in %rdx, and we need to save it before it has a * chance to get trashed. */ ARCH_GET_SIGCONTEXT(sc, sig); enabled = signals_enabled; if(!enabled && (sig == SIGIO)){ pending |= SIGIO_MASK; return; } block_signals(); CHOOSE_MODE_PROC(sig_handler_common_tt, sig_handler_common_skas, sig, sc); set_signals(enabled); }
void sig_handler(int sig) { struct sigcontext *sc; ARCH_GET_SIGCONTEXT(sc, sig); CHOOSE_MODE_PROC(sig_handler_common_tt, sig_handler_common_skas, sig, sc); }
void alarm_handler(int sig) { struct sigcontext *sc; ARCH_GET_SIGCONTEXT(sc, sig); if(!timer_irq_inited) return; if(sig == SIGALRM) switch_timers(0); CHOOSE_MODE_PROC(sig_handler_common_tt, sig_handler_common_skas, sig, sc); if(sig == SIGALRM) switch_timers(1); }
void boot_timer_handler(ARCH_SIGHDLR_PARAM) { struct sigcontext *sc; int enabled; ARCH_GET_SIGCONTEXT(sc, sig); enabled = signals_enabled; if(!enabled){ if(sig == SIGVTALRM) pending |= SIGVTALRM_MASK; else pending |= SIGALRM_MASK; return; } block_signals(); do_boot_timer_handler(sc); set_signals(enabled); }