diff options
author | peter <peter@FreeBSD.org> | 2002-08-28 23:45:15 +0000 |
---|---|---|
committer | peter <peter@FreeBSD.org> | 2002-08-28 23:45:15 +0000 |
commit | a2257589334d769f5e515ff0936ee5c13f1769d8 (patch) | |
tree | 3d7240b9022dd46250cd1b622c9e2722e683bca8 /sys/kern/kern_condvar.c | |
parent | 7b726290f1e66d65654b382a03a1ce5fcc35cb8c (diff) | |
download | FreeBSD-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.c | 8 |
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); |