summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_condvar.c
diff options
context:
space:
mode:
authorpeter <peter@FreeBSD.org>2002-08-28 23:45:15 +0000
committerpeter <peter@FreeBSD.org>2002-08-28 23:45:15 +0000
commita2257589334d769f5e515ff0936ee5c13f1769d8 (patch)
tree3d7240b9022dd46250cd1b622c9e2722e683bca8 /sys/kern/kern_condvar.c
parent7b726290f1e66d65654b382a03a1ce5fcc35cb8c (diff)
downloadFreeBSD-src-a2257589334d769f5e515ff0936ee5c13f1769d8.zip
FreeBSD-src-a2257589334d769f5e515ff0936ee5c13f1769d8.tar.gz
updatepri() works on a ksegrp (where the scheduling parameters are), so
directly give it the ksegrp instead of the thread. The only thing it used to use in the thread was the ksegrp. Reviewed by: julian
Diffstat (limited to 'sys/kern/kern_condvar.c')
-rw-r--r--sys/kern/kern_condvar.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/kern/kern_condvar.c b/sys/kern/kern_condvar.c
index 53c8571..42f989d 100644
--- a/sys/kern/kern_condvar.c
+++ b/sys/kern/kern_condvar.c
@@ -507,6 +507,7 @@ static __inline void
cv_wakeup(struct cv *cvp)
{
struct thread *td;
+ struct ksegrp *kg;
mtx_assert(&sched_lock, MA_OWNED);
td = TAILQ_FIRST(&cvp->cv_waitq);
@@ -519,9 +520,10 @@ cv_wakeup(struct cv *cvp)
/* OPTIMIZED EXPANSION OF setrunnable(td); */
CTR3(KTR_PROC, "cv_signal: thread %p (pid %d, %s)",
td, td->td_proc->p_pid, td->td_proc->p_comm);
- if (td->td_ksegrp->kg_slptime > 1) /* XXXKSE */
- updatepri(td);
- td->td_ksegrp->kg_slptime = 0;
+ kg = td->td_ksegrp;
+ if (kg->kg_slptime > 1) /* XXXKSE */
+ updatepri(kg);
+ kg->kg_slptime = 0;
if (td->td_proc->p_sflag & PS_INMEM) {
setrunqueue(td);
maybe_resched(td);
OpenPOWER on IntegriCloud