Browse Source
Merge pull request #8523 from liamwhite/sc-oopsie
cpu_manager: properly check idle on return from preemption
pull/15/merge
Fernando S
4 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
8 additions and
1 deletions
-
src/core/cpu_manager.cpp
-
src/core/hle/kernel/k_scheduler.h
|
|
|
@ -194,7 +194,9 @@ void CpuManager::PreemptSingleCore(bool from_running_enviroment) { |
|
|
|
{ |
|
|
|
auto& scheduler = system.Kernel().Scheduler(current_core); |
|
|
|
scheduler.Reload(scheduler.GetSchedulerCurrentThread()); |
|
|
|
idle_count = 0; |
|
|
|
if (!scheduler.IsIdle()) { |
|
|
|
idle_count = 0; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -55,6 +55,11 @@ public: |
|
|
|
return idle_thread; |
|
|
|
} |
|
|
|
|
|
|
|
/// Returns true if the scheduler is idle |
|
|
|
[[nodiscard]] bool IsIdle() const { |
|
|
|
return GetSchedulerCurrentThread() == idle_thread; |
|
|
|
} |
|
|
|
|
|
|
|
/// Gets the timestamp for the last context switch in ticks. |
|
|
|
[[nodiscard]] u64 GetLastContextSwitchTicks() const; |
|
|
|
|
|
|
|
|