summaryrefslogtreecommitdiffstats
path: root/sys/kern
diff options
context:
space:
mode:
authordavidxu <davidxu@FreeBSD.org>2003-10-30 02:55:43 +0000
committerdavidxu <davidxu@FreeBSD.org>2003-10-30 02:55:43 +0000
commit91407731e5528326cfe14b333d57ac443ac1c888 (patch)
treed0acaa16fc6bbe8f66bc85029a54e393fd6c3e21 /sys/kern
parent8e63ac0e3853c02aaeafb63a881bbe069927f6a5 (diff)
downloadFreeBSD-src-91407731e5528326cfe14b333d57ac443ac1c888.zip
FreeBSD-src-91407731e5528326cfe14b333d57ac443ac1c888.tar.gz
Try to fetch thread mailbox address in page fault trap, so when thread
blocks in page fault hanlder, and upcall thread can be scheduled. It is useful if process is doing lots of mmap based I/O.
Diffstat (limited to 'sys/kern')
-rw-r--r--sys/kern/kern_sig.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c
index ab98bb0..26ad4b1 100644
--- a/sys/kern/kern_sig.c
+++ b/sys/kern/kern_sig.c
@@ -1498,7 +1498,8 @@ trapsignal(struct thread *td, int sig, u_long code)
p = td->td_proc;
if (td->td_flags & TDF_SA) {
- thread_user_enter(p, td);
+ if (td->td_mailbox == NULL)
+ thread_user_enter(p, td);
PROC_LOCK(p);
if (td->td_mailbox) {
SIGDELSET(td->td_sigmask, sig);
OpenPOWER on IntegriCloud