diff options
author | jhb <jhb@FreeBSD.org> | 2002-06-07 05:39:16 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2002-06-07 05:39:16 +0000 |
commit | fd3d90c2c85d318baf50e0a87f17c885c98ad010 (patch) | |
tree | e4ee6179ef21cf05b9b97149b299edee32f314e4 /sys/kern/kern_condvar.c | |
parent | fbebc83b5b089064d7d4f969ef3459ad64815af2 (diff) | |
download | FreeBSD-src-fd3d90c2c85d318baf50e0a87f17c885c98ad010.zip FreeBSD-src-fd3d90c2c85d318baf50e0a87f17c885c98ad010.tar.gz |
- Catch up to new ktrace API.
- ktrace trace points in msleep() and cv_wait() no longer need Giant.
Diffstat (limited to 'sys/kern/kern_condvar.c')
-rw-r--r-- | sys/kern/kern_condvar.c | 39 |
1 files changed, 18 insertions, 21 deletions
diff --git a/sys/kern/kern_condvar.c b/sys/kern/kern_condvar.c index 4608539..9d30d25 100644 --- a/sys/kern/kern_condvar.c +++ b/sys/kern/kern_condvar.c @@ -198,8 +198,8 @@ cv_wait(struct cv *cvp, struct mtx *mp) td = curthread; #ifdef KTRACE - if (td->td_proc && KTRPOINT(td->td_proc, KTR_CSW)) - ktrcsw(td->td_proc->p_tracep, 1, 0); + if (KTRPOINT(td, KTR_CSW)) + ktrcsw(1, 0); #endif CV_ASSERT(cvp, mp, td); WITNESS_SLEEP(0, &mp->mtx_object); @@ -227,8 +227,8 @@ cv_wait(struct cv *cvp, struct mtx *mp) mtx_unlock_spin(&sched_lock); #ifdef KTRACE - if (KTRPOINT(td->td_proc, KTR_CSW)) - ktrcsw(td->td_proc->p_tracep, 0, 0); + if (KTRPOINT(td, KTR_CSW)) + ktrcsw(0, 0); #endif PICKUP_GIANT(); mtx_lock(mp); @@ -254,8 +254,8 @@ cv_wait_sig(struct cv *cvp, struct mtx *mp) p = td->td_proc; rval = 0; #ifdef KTRACE - if (td->td_proc && KTRPOINT(td->td_proc, KTR_CSW)) - ktrcsw(td->td_proc->p_tracep, 1, 0); + if (KTRPOINT(td, KTR_CSW)) + ktrcsw(1, 0); #endif CV_ASSERT(cvp, mp, td); WITNESS_SLEEP(0, &mp->mtx_object); @@ -282,7 +282,6 @@ cv_wait_sig(struct cv *cvp, struct mtx *mp) sig = cv_switch_catch(td); mtx_unlock_spin(&sched_lock); - PICKUP_GIANT(); PROC_LOCK(p); if (sig == 0) @@ -296,11 +295,10 @@ cv_wait_sig(struct cv *cvp, struct mtx *mp) PROC_UNLOCK(p); #ifdef KTRACE - mtx_lock(&Giant); - if (KTRPOINT(td->td_proc, KTR_CSW)) - ktrcsw(td->td_proc->p_tracep, 0, 0); - mtx_unlock(&Giant); + if (KTRPOINT(td, KTR_CSW)) + ktrcsw(0, 0); #endif + PICKUP_GIANT(); mtx_lock(mp); WITNESS_RESTORE(&mp->mtx_object, mp); @@ -322,7 +320,8 @@ cv_timedwait(struct cv *cvp, struct mtx *mp, int timo) td = curthread; rval = 0; #ifdef KTRACE - ktrcsw(td->td_proc->p_tracep, 1, 0); + if (KTRPOINT(td, KTR_CSW)) + ktrcsw(1, 0); #endif CV_ASSERT(cvp, mp, td); WITNESS_SLEEP(0, &mp->mtx_object); @@ -366,8 +365,8 @@ cv_timedwait(struct cv *cvp, struct mtx *mp, int timo) mtx_unlock_spin(&sched_lock); #ifdef KTRACE - if (KTRPOINT(td->td_proc, KTR_CSW)) - ktrcsw(td->td_proc->p_tracep, 0, 0); + if (KTRPOINT(td, KTR_CSW)) + ktrcsw(0, 0); #endif PICKUP_GIANT(); mtx_lock(mp); @@ -395,8 +394,8 @@ cv_timedwait_sig(struct cv *cvp, struct mtx *mp, int timo) p = td->td_proc; rval = 0; #ifdef KTRACE - if (td->td_proc && KTRPOINT(td->td_proc, KTR_CSW)) - ktrcsw(td->td_proc->p_tracep, 1, 0); + if (KTRPOINT(td, KTR_CSW)) + ktrcsw(1, 0); #endif CV_ASSERT(cvp, mp, td); WITNESS_SLEEP(0, &mp->mtx_object); @@ -439,7 +438,6 @@ cv_timedwait_sig(struct cv *cvp, struct mtx *mp, int timo) } mtx_unlock_spin(&sched_lock); - PICKUP_GIANT(); PROC_LOCK(p); if (sig == 0) @@ -453,11 +451,10 @@ cv_timedwait_sig(struct cv *cvp, struct mtx *mp, int timo) PROC_UNLOCK(p); #ifdef KTRACE - mtx_lock(&Giant); - if (KTRPOINT(td->td_proc, KTR_CSW)) - ktrcsw(td->td_proc->p_tracep, 0, 0); - mtx_unlock(&Giant); + if (KTRPOINT(td, KTR_CSW)) + ktrcsw(0, 0); #endif + PICKUP_GIANT(); mtx_lock(mp); WITNESS_RESTORE(&mp->mtx_object, mp); |