summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/libthr/thread/thr_sig.c22
1 files changed, 7 insertions, 15 deletions
diff --git a/lib/libthr/thread/thr_sig.c b/lib/libthr/thread/thr_sig.c
index 4dbb252..415ddb0 100644
--- a/lib/libthr/thread/thr_sig.c
+++ b/lib/libthr/thread/thr_sig.c
@@ -318,31 +318,23 @@ check_deferred_signal(struct pthread *curthread)
ucontext_t *uc;
struct sigaction act;
siginfo_t info;
+ int uc_len;
if (__predict_true(curthread->deferred_siginfo.si_signo == 0))
return;
-#if defined(__amd64__) || defined(__i386__)
- int uc_len;
uc_len = __getcontextx_size();
uc = alloca(uc_len);
getcontext(uc);
if (curthread->deferred_siginfo.si_signo == 0)
return;
__fillcontextx2((char *)uc);
-#else
- ucontext_t ucv;
- uc = &ucv;
- getcontext(uc);
-#endif
- if (curthread->deferred_siginfo.si_signo != 0) {
- act = curthread->deferred_sigact;
- uc->uc_sigmask = curthread->deferred_sigmask;
- memcpy(&info, &curthread->deferred_siginfo, sizeof(siginfo_t));
- /* remove signal */
- curthread->deferred_siginfo.si_signo = 0;
- handle_signal(&act, info.si_signo, &info, uc);
- }
+ act = curthread->deferred_sigact;
+ uc->uc_sigmask = curthread->deferred_sigmask;
+ memcpy(&info, &curthread->deferred_siginfo, sizeof(siginfo_t));
+ /* remove signal */
+ curthread->deferred_siginfo.si_signo = 0;
+ handle_signal(&act, info.si_signo, &info, uc);
}
static void
OpenPOWER on IntegriCloud