From b484f27530babd3e5b1b47c4018326b8c556e372 Mon Sep 17 00:00:00 2001 From: Michael Scire Date: Tue, 21 Feb 2023 08:08:08 -0700 Subject: [PATCH] kern: simplify KSchedulerLock::Lock --- .../include/mesosphere/kern_k_scheduler_lock.hpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/libraries/libmesosphere/include/mesosphere/kern_k_scheduler_lock.hpp b/libraries/libmesosphere/include/mesosphere/kern_k_scheduler_lock.hpp index 14ff730b7..d96d2e55f 100644 --- a/libraries/libmesosphere/include/mesosphere/kern_k_scheduler_lock.hpp +++ b/libraries/libmesosphere/include/mesosphere/kern_k_scheduler_lock.hpp @@ -49,9 +49,9 @@ namespace ams::kern { MESOSPHERE_ASSERT_THIS(); if (this->IsLockedByCurrentThread()) { - /* If we already own the lock, we can just increment the count. */ + /* If we already own the lock, the lock count should be > 0. */ + /* For debug, ensure this is true. */ MESOSPHERE_ASSERT(m_lock_count > 0); - m_lock_count++; } else { /* Otherwise, we want to disable scheduling and acquire the spinlock. */ SchedulerType::DisableScheduling(); @@ -61,10 +61,12 @@ namespace ams::kern { MESOSPHERE_ASSERT(m_lock_count == 0); MESOSPHERE_ASSERT(m_owner_thread == nullptr); - /* Increment count, take ownership. */ - m_lock_count = 1; + /* Take ownership of the lock. */ m_owner_thread = GetCurrentThreadPointer(); } + + /* Increment the lock count. */ + m_lock_count++; } MESOSPHERE_ALWAYS_INLINE_IF_RELEASE void Unlock() {