aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/global_scheduler_context.cpp
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2022-10-26 09:51:44 -0700
committerGitHub <noreply@github.com>2022-10-26 09:51:44 -0700
commit2dd6a2352d030230f08b045a21e529ea8f06cf97 (patch)
tree912bff09ece8da0ade954056bf9ecb3e6ddee673 /src/core/hle/kernel/global_scheduler_context.cpp
parent041eb5bf57f4db8609341c77bd5d38ddcd8b2d80 (diff)
parent1a378a776902e1142b907110c6dd3a3a1647d328 (diff)
Merge pull request #9125 from liamwhite/dummy-scheduler
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.cpp22
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