summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_mutex.c
diff options
context:
space:
mode:
authorjeff <jeff@FreeBSD.org>2007-07-18 20:38:13 +0000
committerjeff <jeff@FreeBSD.org>2007-07-18 20:38:13 +0000
commit45491c3f8a107cfdeb617dc9821d7b8eedda4bbe (patch)
tree83960f7bb788f62e53090019ad01d01f9e8df477 /sys/kern/kern_mutex.c
parent9b52656cc2c15dababfc24992c3e5a00263580b2 (diff)
downloadFreeBSD-src-45491c3f8a107cfdeb617dc9821d7b8eedda4bbe.zip
FreeBSD-src-45491c3f8a107cfdeb617dc9821d7b8eedda4bbe.tar.gz
- Add the proper lock profiling calls to _thread_lock().
Obtained from: kipmacy Approved by: re
Diffstat (limited to 'sys/kern/kern_mutex.c')
-rw-r--r--sys/kern/kern_mutex.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/sys/kern/kern_mutex.c b/sys/kern/kern_mutex.c
index a36a2ed..426c1b3 100644
--- a/sys/kern/kern_mutex.c
+++ b/sys/kern/kern_mutex.c
@@ -473,9 +473,12 @@ _thread_lock_flags(struct thread *td, int opts, const char *file, int line)
{
struct mtx *m;
uintptr_t tid;
- int i;
+ int i, contested;
+ uint64_t waittime;
- i = 0;
+
+ contested = i = 0;
+ waittime = 0;
tid = (uintptr_t)curthread;
for (;;) {
retry:
@@ -488,6 +491,7 @@ retry:
m->mtx_recurse++;
break;
}
+ lock_profile_obtain_lock_failed(&m->lock_object, &contested, &waittime);
/* Give interrupts a chance while we spin. */
spinlock_exit();
while (m->mtx_lock != MTX_UNOWNED) {
@@ -508,6 +512,8 @@ retry:
break;
_rel_spin_lock(m); /* does spinlock_exit() */
}
+ lock_profile_obtain_lock_success(&m->lock_object, contested,
+ waittime, (file), (line));
WITNESS_LOCK(&m->lock_object, opts | LOP_EXCLUSIVE, file, line);
}
OpenPOWER on IntegriCloud