summaryrefslogtreecommitdiffstats
path: root/sys/i386/svr4
diff options
context:
space:
mode:
authorobrien <obrien@FreeBSD.org>2004-01-05 00:29:00 +0000
committerobrien <obrien@FreeBSD.org>2004-01-05 00:29:00 +0000
commitfae4c97a55eb3fc444c2267f0f0e505a2b0d5f62 (patch)
treed6d22c75336ac8fd3a00080ddfb2fe5a4c28970e /sys/i386/svr4
parent84dcced1d556488335591b4c3fab4b873b25b450 (diff)
downloadFreeBSD-src-fae4c97a55eb3fc444c2267f0f0e505a2b0d5f62.zip
FreeBSD-src-fae4c97a55eb3fc444c2267f0f0e505a2b0d5f62.tar.gz
Attempt to make the proper changes here for the proc.h commit:
Make sigaltstack as per-threaded, because per-process sigaltstack state is useless for threaded programs, multiple threads can not share same stack. The alternative signal stack is private for thread, no lock is needed, the orignal P_ALTSTACK is now moved into td_pflags and renamed to TDP_ALTSTACK. For single thread or Linux clone() based threaded program, there is no semantic changed, because those programs only have one kernel thread in every process. which left out SVR4 bits.
Diffstat (limited to 'sys/i386/svr4')
-rw-r--r--sys/i386/svr4/svr4_machdep.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/sys/i386/svr4/svr4_machdep.c b/sys/i386/svr4/svr4_machdep.c
index a800b43..91ad9d3 100644
--- a/sys/i386/svr4/svr4_machdep.c
+++ b/sys/i386/svr4/svr4_machdep.c
@@ -206,7 +206,7 @@ svr4_setcontext(td, uc)
#if defined(DONE_MORE_SIGALTSTACK_WORK)
psp = p->p_sigacts;
#endif
- sf = &p->p_sigstk;
+ sf = &td->td_sigstk;
/*
* XXX:
@@ -437,11 +437,11 @@ svr4_sendsig(catcher, sig, mask, code)
/*
* Allocate space for the signal handler context.
*/
- if ((p->p_flag & P_ALTSTACK) && !oonstack &&
+ if ((td->td_pflags & TDP_ALTSTACK) && !oonstack &&
SIGISMEMBER(psp->ps_sigonstack, sig)) {
- fp = (struct svr4_sigframe *)(p->p_sigstk.ss_sp +
- p->p_sigstk.ss_size - sizeof(struct svr4_sigframe));
- p->p_sigstk.ss_flags |= SS_ONSTACK;
+ fp = (struct svr4_sigframe *)(td->td_sigstk.ss_sp +
+ td->td_sigstk.ss_size - sizeof(struct svr4_sigframe));
+ td->td_sigstk.ss_flags |= SS_ONSTACK;
} else {
fp = (struct svr4_sigframe *)tf->tf_esp - 1;
}
OpenPOWER on IntegriCloud