From c32137f3fd688e26b8bf65adf7bb470373c5a78d Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Sat, 9 Mar 2019 12:02:00 -0500 Subject: [PATCH] kernel: Tweak some mutex functions. * Remove code duplication. * Make _mutex_trylock work in non-KDEBUG kernels. This should fix spurious failures to lock in drivers compiled for KDEBUG kernels running under non-KDEBUG kernels. --- src/system/kernel/locks/lock.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/system/kernel/locks/lock.cpp b/src/system/kernel/locks/lock.cpp index 6573e03f0a..33a1d7e632 100644 --- a/src/system/kernel/locks/lock.cpp +++ b/src/system/kernel/locks/lock.cpp @@ -652,10 +652,7 @@ mutex_switch_lock(mutex* from, mutex* to) { InterruptsSpinLocker locker(to->lock); -#if !KDEBUG - if (atomic_add(&from->count, 1) < -1) -#endif - _mutex_unlock(from); + mutex_unlock(from); return mutex_lock_threads_locked(to, &locker); } @@ -802,8 +799,10 @@ _mutex_trylock(mutex* lock) lock->holder = thread_get_current_thread_id(); return B_OK; } -#endif return B_WOULD_BLOCK; +#else + return mutex_trylock(lock); +#endif }