|
@@ -17,16 +17,8 @@ class KernelCore;
|
|
|
|
|
|
|
|
template <typename SchedulerType>
|
|
template <typename SchedulerType>
|
|
|
class KAbstractSchedulerLock {
|
|
class KAbstractSchedulerLock {
|
|
|
-private:
|
|
|
|
|
- KernelCore& kernel;
|
|
|
|
|
- Common::SpinLock spin_lock;
|
|
|
|
|
- s32 lock_count;
|
|
|
|
|
- Core::EmuThreadHandle owner_thread;
|
|
|
|
|
-
|
|
|
|
|
public:
|
|
public:
|
|
|
- KAbstractSchedulerLock(KernelCore& kernel)
|
|
|
|
|
- : kernel{kernel}, spin_lock(), lock_count(0),
|
|
|
|
|
- owner_thread(Core::EmuThreadHandle::InvalidHandle()) {}
|
|
|
|
|
|
|
+ explicit KAbstractSchedulerLock(KernelCore& kernel) : kernel{kernel} {}
|
|
|
|
|
|
|
|
bool IsLockedByCurrentThread() const {
|
|
bool IsLockedByCurrentThread() const {
|
|
|
return this->owner_thread == kernel.GetCurrentEmuThreadID();
|
|
return this->owner_thread == kernel.GetCurrentEmuThreadID();
|
|
@@ -71,6 +63,12 @@ public:
|
|
|
SchedulerType::EnableScheduling(kernel, cores_needing_scheduling, leaving_thread);
|
|
SchedulerType::EnableScheduling(kernel, cores_needing_scheduling, leaving_thread);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+private:
|
|
|
|
|
+ KernelCore& kernel;
|
|
|
|
|
+ Common::SpinLock spin_lock{};
|
|
|
|
|
+ s32 lock_count{};
|
|
|
|
|
+ Core::EmuThreadHandle owner_thread{Core::EmuThreadHandle::InvalidHandle()};
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
} // namespace Kernel
|
|
} // namespace Kernel
|