diff options
author | davidxu <davidxu@FreeBSD.org> | 2010-12-29 09:26:46 +0000 |
---|---|---|
committer | davidxu <davidxu@FreeBSD.org> | 2010-12-29 09:26:46 +0000 |
commit | 3daac37e3cc9ba1161d9a56fb17bf021fe99aa16 (patch) | |
tree | 9d0be0ab5ff441a5fb794fbe642d219564ec4a4e /sys/kern/kern_resource.c | |
parent | 83176a34645a1df8d5383963324f71a7b7c3a195 (diff) | |
download | FreeBSD-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.c | 2 |
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); |