summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/kern/kern_mutex.c8
-rw-r--r--sys/kern/subr_turnstile.c8
-rw-r--r--sys/sys/mutex.h9
3 files changed, 23 insertions, 2 deletions
diff --git a/sys/kern/kern_mutex.c b/sys/kern/kern_mutex.c
index b0e3f30..2a98204 100644
--- a/sys/kern/kern_mutex.c
+++ b/sys/kern/kern_mutex.c
@@ -394,7 +394,11 @@ _mtx_lock_spin_flags(struct mtx *m, int opts, const char *file, int line)
{
MPASS(curthread != NULL);
+#if defined(SMP) || LOCK_DEBUG > 0
_get_spin_lock(m, curthread, opts, file, line);
+#else
+ critical_enter();
+#endif
LOCK_LOG_LOCK("LOCK", &m->mtx_object, opts, m->mtx_recurse, file,
line);
WITNESS_LOCK(&m->mtx_object, opts | LOP_EXCLUSIVE, file, line);
@@ -409,7 +413,11 @@ _mtx_unlock_spin_flags(struct mtx *m, int opts, const char *file, int line)
WITNESS_UNLOCK(&m->mtx_object, opts | LOP_EXCLUSIVE, file, line);
LOCK_LOG_LOCK("UNLOCK", &m->mtx_object, opts, m->mtx_recurse, file,
line);
+#if defined(SMP) || LOCK_DEBUG > 0
_rel_spin_lock(m);
+#else
+ critical_exit();
+#endif
}
/*
diff --git a/sys/kern/subr_turnstile.c b/sys/kern/subr_turnstile.c
index b0e3f30..2a98204 100644
--- a/sys/kern/subr_turnstile.c
+++ b/sys/kern/subr_turnstile.c
@@ -394,7 +394,11 @@ _mtx_lock_spin_flags(struct mtx *m, int opts, const char *file, int line)
{
MPASS(curthread != NULL);
+#if defined(SMP) || LOCK_DEBUG > 0
_get_spin_lock(m, curthread, opts, file, line);
+#else
+ critical_enter();
+#endif
LOCK_LOG_LOCK("LOCK", &m->mtx_object, opts, m->mtx_recurse, file,
line);
WITNESS_LOCK(&m->mtx_object, opts | LOP_EXCLUSIVE, file, line);
@@ -409,7 +413,11 @@ _mtx_unlock_spin_flags(struct mtx *m, int opts, const char *file, int line)
WITNESS_UNLOCK(&m->mtx_object, opts | LOP_EXCLUSIVE, file, line);
LOCK_LOG_LOCK("UNLOCK", &m->mtx_object, opts, m->mtx_recurse, file,
line);
+#if defined(SMP) || LOCK_DEBUG > 0
_rel_spin_lock(m);
+#else
+ critical_exit();
+#endif
}
/*
diff --git a/sys/sys/mutex.h b/sys/sys/mutex.h
index bd0c52c..004b992 100644
--- a/sys/sys/mutex.h
+++ b/sys/sys/mutex.h
@@ -258,16 +258,21 @@ extern int mtx_pool_valid;
_mtx_lock_spin_flags((m), (opts), LOCK_FILE, LOCK_LINE)
#define mtx_unlock_spin_flags(m, opts) \
_mtx_unlock_spin_flags((m), (opts), LOCK_FILE, LOCK_LINE)
-#else
+#else /* LOCK_DEBUG == 0 */
#define mtx_lock_flags(m, opts) \
_get_sleep_lock((m), curthread, (opts), LOCK_FILE, LOCK_LINE)
#define mtx_unlock_flags(m, opts) \
_rel_sleep_lock((m), curthread, (opts), LOCK_FILE, LOCK_LINE)
+#ifdef SMP
#define mtx_lock_spin_flags(m, opts) \
_get_spin_lock((m), curthread, (opts), LOCK_FILE, LOCK_LINE)
#define mtx_unlock_spin_flags(m, opts) \
_rel_spin_lock((m))
-#endif
+#else /* SMP */
+#define mtx_lock_spin_flags(m, opts) critical_enter()
+#define mtx_unlock_spin_flags(m, opts) critical_exit()
+#endif /* SMP */
+#endif /* LOCK_DEBUG */
#define mtx_trylock_flags(m, opts) \
_mtx_trylock((m), (opts), LOCK_FILE, LOCK_LINE)
OpenPOWER on IntegriCloud