diff options
| author | Liam <byteslice@airmail.cc> | 2022-10-23 05:24:38 -0400 |
|---|---|---|
| committer | Liam <byteslice@airmail.cc> | 2022-10-24 19:52:01 -0400 |
| commit | 1a378a776902e1142b907110c6dd3a3a1647d328 (patch) | |
| tree | 7b431310dfc5331f601076b3dd11d76d66f89f02 /src/core/hle/kernel/global_scheduler_context.cpp | |
| parent | 0860fffd78e5c0a833bd0285d651a4615d29c4f4 (diff) | |
kernel: refactor dummy thread wakeups
Diffstat (limited to 'src/core/hle/kernel/global_scheduler_context.cpp')
| -rw-r--r-- | src/core/hle/kernel/global_scheduler_context.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/core/hle/kernel/global_scheduler_context.cpp b/src/core/hle/kernel/global_scheduler_context.cpp index 65576b8c4..fd911a3a5 100644 --- a/src/core/hle/kernel/global_scheduler_context.cpp +++ b/src/core/hle/kernel/global_scheduler_context.cpp @@ -49,4 +49,26 @@ bool GlobalSchedulerContext::IsLocked() const { return scheduler_lock.IsLockedByCurrentThread(); } +void GlobalSchedulerContext::RegisterDummyThreadForWakeup(KThread* thread) { + ASSERT(IsLocked()); + + woken_dummy_threads.insert(thread); +} + +void GlobalSchedulerContext::UnregisterDummyThreadForWakeup(KThread* thread) { + ASSERT(IsLocked()); + + woken_dummy_threads.erase(thread); +} + +void GlobalSchedulerContext::WakeupWaitingDummyThreads() { + ASSERT(IsLocked()); + + for (auto* thread : woken_dummy_threads) { + thread->DummyThreadEndWait(); + } + + woken_dummy_threads.clear(); +} + } // namespace Kernel |
