diff options
-rw-r--r-- | sys/kern/kern_mutex.c | 12 | ||||
-rw-r--r-- | sys/kern/kern_sx.c | 10 |
2 files changed, 16 insertions, 6 deletions
diff --git a/sys/kern/kern_mutex.c b/sys/kern/kern_mutex.c index 00d0353..00ed475 100644 --- a/sys/kern/kern_mutex.c +++ b/sys/kern/kern_mutex.c @@ -157,9 +157,9 @@ _mtx_lock_flags(struct mtx *m, int opts, const char *file, int line) void _mtx_unlock_flags(struct mtx *m, int opts, const char *file, int line) { - +#ifdef LOCK_PROFILING struct lock_object lo; - +#endif MPASS(curthread != NULL); KASSERT(m->mtx_lock != MTX_DESTROYED, ("mtx_unlock() of destroyed mutex @ %s:%d", file, line)); @@ -176,7 +176,9 @@ _mtx_unlock_flags(struct mtx *m, int opts, const char *file, int line) m->mtx_object.lo_flags &= ~LO_CONTESTED; #endif _rel_sleep_lock(m, curthread, opts, file, line); +#ifdef LOCK_PROFILING lock_profile_release_lock(&lo); +#endif } void @@ -200,9 +202,9 @@ _mtx_lock_spin_flags(struct mtx *m, int opts, const char *file, int line) void _mtx_unlock_spin_flags(struct mtx *m, int opts, const char *file, int line) { - +#ifdef LOCK_PROFILING struct lock_object lo; - +#endif MPASS(curthread != NULL); KASSERT(m->mtx_lock != MTX_DESTROYED, ("mtx_unlock_spin() of destroyed mutex @ %s:%d", file, line)); @@ -218,7 +220,9 @@ _mtx_unlock_spin_flags(struct mtx *m, int opts, const char *file, int line) m->mtx_object.lo_flags &= ~LO_CONTESTED; #endif _rel_spin_lock(m); +#ifdef LOCK_PROFILING lock_profile_release_lock(&lo); +#endif } /* diff --git a/sys/kern/kern_sx.c b/sys/kern/kern_sx.c index 2381c06..967d7a5 100644 --- a/sys/kern/kern_sx.c +++ b/sys/kern/kern_sx.c @@ -228,9 +228,10 @@ _sx_try_xlock(struct sx *sx, const char *file, int line) void _sx_sunlock(struct sx *sx, const char *file, int line) { +#ifdef LOCK_PROFILING struct lock_object lo; int count = -1; - +#endif _sx_assert(sx, SX_SLOCKED, file, line); mtx_lock(sx->sx_lock); @@ -262,15 +263,18 @@ _sx_sunlock(struct sx *sx, const char *file, int line) LOCK_LOG_LOCK("SUNLOCK", &sx->sx_object, 0, 0, file, line); mtx_unlock(sx->sx_lock); +#ifdef LOCK_PROFILING if (count == 0) lock_profile_release_lock(&lo); - +#endif } void _sx_xunlock(struct sx *sx, const char *file, int line) { +#ifdef LOCK_PROFILING struct lock_object lo; +#endif _sx_assert(sx, SX_XLOCKED, file, line); mtx_lock(sx->sx_lock); @@ -298,7 +302,9 @@ _sx_xunlock(struct sx *sx, const char *file, int line) LOCK_LOG_LOCK("XUNLOCK", &sx->sx_object, 0, 0, file, line); mtx_unlock(sx->sx_lock); +#ifdef LOCK_PROFILING lock_profile_release_lock(&lo); +#endif } int |