mirror of
https://git.eden-emu.dev/eden-emu/eden.git
synced 2025-07-20 16:25:45 +00:00
kernel: Ensure all uses of disable_count are balanced
This commit is contained in:
parent
77137583cd
commit
a9a83fa726
3 changed files with 21 additions and 10 deletions
|
@ -63,14 +63,8 @@ void KScheduler::EnableScheduling(KernelCore& kernel, u64 cores_needing_scheduli
|
|||
auto* scheduler{kernel.CurrentScheduler()};
|
||||
|
||||
if (!scheduler || kernel.IsPhantomModeForSingleCore()) {
|
||||
// HACK: we cannot schedule from this thread, it is not a core thread
|
||||
RescheduleCores(kernel, cores_needing_scheduling);
|
||||
if (GetCurrentThread(kernel).GetDisableDispatchCount() == 1) {
|
||||
// Special case to ensure dummy threads that are waiting block
|
||||
GetCurrentThread(kernel).IfDummyThreadTryWait();
|
||||
}
|
||||
GetCurrentThread(kernel).EnableDispatch();
|
||||
ASSERT(GetCurrentThread(kernel).GetState() != ThreadState::Waiting);
|
||||
KScheduler::RescheduleCores(kernel, cores_needing_scheduling);
|
||||
KScheduler::RescheduleCurrentHLEThread(kernel);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -83,6 +77,17 @@ void KScheduler::EnableScheduling(KernelCore& kernel, u64 cores_needing_scheduli
|
|||
}
|
||||
}
|
||||
|
||||
void KScheduler::RescheduleCurrentHLEThread(KernelCore& kernel) {
|
||||
// HACK: we cannot schedule from this thread, it is not a core thread
|
||||
ASSERT(GetCurrentThread(kernel).GetDisableDispatchCount() == 1);
|
||||
|
||||
// Special case to ensure dummy threads that are waiting block
|
||||
GetCurrentThread(kernel).IfDummyThreadTryWait();
|
||||
|
||||
ASSERT(GetCurrentThread(kernel).GetState() != ThreadState::Waiting);
|
||||
GetCurrentThread(kernel).EnableDispatch();
|
||||
}
|
||||
|
||||
u64 KScheduler::UpdateHighestPriorityThreads(KernelCore& kernel) {
|
||||
if (IsSchedulerUpdateNeeded(kernel)) {
|
||||
return UpdateHighestPriorityThreadsImpl(kernel);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue