Browse Source

kernel: simplify KAbstractSchedulerLock::Lock

nce_cpp
Liam 3 years ago
parent
commit
7c2041afbc
  1. 11
      src/core/hle/kernel/k_scheduler_lock.h

11
src/core/hle/kernel/k_scheduler_lock.h

@ -31,22 +31,23 @@ public:
} }
if (IsLockedByCurrentThread()) { if (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.
ASSERT(lock_count > 0); ASSERT(lock_count > 0);
lock_count++;
} else { } else {
// Otherwise, we want to disable scheduling and acquire the spinlock. // Otherwise, we want to disable scheduling and acquire the spinlock.
SchedulerType::DisableScheduling(kernel); SchedulerType::DisableScheduling(kernel);
spin_lock.Lock(); spin_lock.Lock();
// For debug, ensure that our state is valid.
ASSERT(lock_count == 0); ASSERT(lock_count == 0);
ASSERT(owner_thread == nullptr); ASSERT(owner_thread == nullptr);
// Increment count, take ownership.
lock_count = 1;
// Take ownership of the lock.
owner_thread = GetCurrentThreadPointer(kernel); owner_thread = GetCurrentThreadPointer(kernel);
} }
// Increment the lock count.
lock_count++;
} }
void Unlock() { void Unlock() {

Loading…
Cancel
Save