diff options
author | jeff <jeff@FreeBSD.org> | 2003-03-31 21:40:47 +0000 |
---|---|---|
committer | jeff <jeff@FreeBSD.org> | 2003-03-31 21:40:47 +0000 |
commit | 848087b9b0b45a29daa2a3f8acf9cb8d797e8b51 (patch) | |
tree | 160e82df3537ad029f4930285efcd5ff4fbccdc4 | |
parent | ca1839cb9191762cd4c49990a18f78fd9798c4d1 (diff) | |
download | FreeBSD-src-848087b9b0b45a29daa2a3f8acf9cb8d797e8b51.zip FreeBSD-src-848087b9b0b45a29daa2a3f8acf9cb8d797e8b51.tar.gz |
- Use sigexit() instead of twiddling the signal mask, catch, ignore, and
action bits to allow SIGILL to work as expected. This brings this file in
line with other architectures.
-rw-r--r-- | sys/alpha/alpha/machdep.c | 18 | ||||
-rw-r--r-- | sys/alpha/osf1/osf1_signal.c | 6 | ||||
-rw-r--r-- | sys/ia64/ia64/machdep.c | 6 |
3 files changed, 5 insertions, 25 deletions
diff --git a/sys/alpha/alpha/machdep.c b/sys/alpha/alpha/machdep.c index 98afcd1..273bda5 100644 --- a/sys/alpha/alpha/machdep.c +++ b/sys/alpha/alpha/machdep.c @@ -1199,11 +1199,7 @@ osendsig(sig_t catcher, int sig, sigset_t *mask, u_long code) * instruction to halt it in its tracks. */ PROC_LOCK(p); - SIGACTION(p, SIGILL) = SIG_DFL; - SIGDELSET(p->p_sigignore, SIGILL); - SIGDELSET(p->p_sigcatch, SIGILL); - SIGDELSET(p->p_sigmask, SIGILL); - psignal(p, SIGILL); + sigexit(td, SIGILL); return; } @@ -1305,11 +1301,7 @@ freebsd4_sendsig(sig_t catcher, int sig, sigset_t *mask, u_long code) * instruction to halt it in its tracks. */ PROC_LOCK(p); - SIGACTION(p, SIGILL) = SIG_DFL; - SIGDELSET(p->p_sigignore, SIGILL); - SIGDELSET(p->p_sigcatch, SIGILL); - SIGDELSET(p->p_sigmask, SIGILL); - psignal(p, SIGILL); + sigexit(td, SIGILL); return; } @@ -1430,11 +1422,7 @@ sendsig(sig_t catcher, int sig, sigset_t *mask, u_long code) * instruction to halt it in its tracks. */ PROC_LOCK(p); - SIGACTION(p, SIGILL) = SIG_DFL; - SIGDELSET(p->p_sigignore, SIGILL); - SIGDELSET(p->p_sigcatch, SIGILL); - SIGDELSET(p->p_sigmask, SIGILL); - psignal(p, SIGILL); + sigexit(td, SIGILL); return; } diff --git a/sys/alpha/osf1/osf1_signal.c b/sys/alpha/osf1/osf1_signal.c index b1369ed..718c7d9 100644 --- a/sys/alpha/osf1/osf1_signal.c +++ b/sys/alpha/osf1/osf1_signal.c @@ -663,11 +663,7 @@ osf1_sendsig(sig_t catcher, int sig, sigset_t *mask, u_long code) * instruction to halt it in its tracks. */ PROC_LOCK(p); - SIGACTION(p, SIGILL) = SIG_DFL; - SIGDELSET(p->p_sigignore, SIGILL); - SIGDELSET(p->p_sigcatch, SIGILL); - SIGDELSET(p->p_sigmask, SIGILL); - psignal(p, SIGILL); + sigexit(td, SIGILL); return; } diff --git a/sys/ia64/ia64/machdep.c b/sys/ia64/ia64/machdep.c index e313fb9..57e86c3 100644 --- a/sys/ia64/ia64/machdep.c +++ b/sys/ia64/ia64/machdep.c @@ -857,11 +857,7 @@ sendsig(sig_t catcher, int sig, sigset_t *mask, u_long code) * instruction to halt it in its tracks. */ PROC_LOCK(p); - SIGACTION(p, SIGILL) = SIG_DFL; - SIGDELSET(p->p_sigignore, SIGILL); - SIGDELSET(p->p_sigcatch, SIGILL); - SIGDELSET(p->p_sigmask, SIGILL); - psignal(p, SIGILL); + sigexit(td, SIGILL); return; } #ifdef DEBUG |