svn commit: r251284 - head/lib/libthr/thread
Konstantin Belousov
kib at FreeBSD.org
Mon Jun 3 04:22:43 UTC 2013
Author: kib
Date: Mon Jun 3 04:22:42 2013
New Revision: 251284
URL: http://svnweb.freebsd.org/changeset/base/251284
Log:
Since the cause of the problems with the __fillcontextx() was
identified, unify the code of check_deferred_signal() for all
architectures, making the variant under #ifdef x86 common.
Tested by: marius (sparc64)
Sponsored by: The FreeBSD Foundation
MFC after: 2 weeks
Modified:
head/lib/libthr/thread/thr_sig.c
Modified: head/lib/libthr/thread/thr_sig.c
==============================================================================
--- head/lib/libthr/thread/thr_sig.c Mon Jun 3 04:19:21 2013 (r251283)
+++ head/lib/libthr/thread/thr_sig.c Mon Jun 3 04:22:42 2013 (r251284)
@@ -318,31 +318,23 @@ check_deferred_signal(struct pthread *cu
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
More information about the svn-src-head
mailing list