summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_resource.c
diff options
context:
space:
mode:
authordavidxu <davidxu@FreeBSD.org>2010-12-29 09:26:46 +0000
committerdavidxu <davidxu@FreeBSD.org>2010-12-29 09:26:46 +0000
commit3daac37e3cc9ba1161d9a56fb17bf021fe99aa16 (patch)
tree9d0be0ab5ff441a5fb794fbe642d219564ec4a4e /sys/kern/kern_resource.c
parent83176a34645a1df8d5383963324f71a7b7c3a195 (diff)
downloadFreeBSD-src-3daac37e3cc9ba1161d9a56fb17bf021fe99aa16.zip
FreeBSD-src-3daac37e3cc9ba1161d9a56fb17bf021fe99aa16.tar.gz
- Follow r216313, the sched_unlend_user_prio is no longer needed, always
use sched_lend_user_prio to set lent priority. - Improve pthread priority-inherit mutex, when a contender's priority is lowered, repropagete priorities, this may cause mutex owner's priority to be lowerd, in old code, mutex owner's priority is rise-only.
Diffstat (limited to 'sys/kern/kern_resource.c')
-rw-r--r--sys/kern/kern_resource.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/kern/kern_resource.c b/sys/kern/kern_resource.c
index ec6b9cc..5bc3da5 100644
--- a/sys/kern/kern_resource.c
+++ b/sys/kern/kern_resource.c
@@ -489,8 +489,10 @@ rtp_to_pri(struct rtprio *rtp, struct thread *td)
if (curthread == td)
sched_prio(curthread, td->td_user_pri); /* XXX dubious */
if (TD_ON_UPILOCK(td) && oldpri != newpri) {
+ critical_enter();
thread_unlock(td);
umtx_pi_adjust(td, oldpri);
+ critical_exit();
} else
thread_unlock(td);
return (0);
OpenPOWER on IntegriCloud