diff options
| author | Fernando Sahmkow <fsahmkow27@gmail.com> | 2020-03-07 13:27:27 -0400 | 
|---|---|---|
| committer | Fernando Sahmkow <fsahmkow27@gmail.com> | 2020-06-27 11:35:35 -0400 | 
| commit | 725bac14044b2645b9ce912d1b1e2c9c2a96818b (patch) | |
| tree | a5eaedf5bc5647f9bde9215097472819bbb9d6ac /src/core/hle/kernel | |
| parent | 38c6c497f6895cff2f073802e77834aa3347f954 (diff) | |
Scheduler: Remove arm_interface lock and a few corrections.
Diffstat (limited to 'src/core/hle/kernel')
| -rw-r--r-- | src/core/hle/kernel/scheduler.cpp | 10 | 
1 files changed, 3 insertions, 7 deletions
diff --git a/src/core/hle/kernel/scheduler.cpp b/src/core/hle/kernel/scheduler.cpp index a37b992ec..affc2fbed 100644 --- a/src/core/hle/kernel/scheduler.cpp +++ b/src/core/hle/kernel/scheduler.cpp @@ -463,9 +463,7 @@ void GlobalScheduler::AdjustSchedulingOnPriority(Thread* thread, u32 old_priorit      }      if (thread->processor_id >= 0) { -        // TODO(Blinkhawk): compare it with current thread running on current core, instead of -        // checking running -        if (thread->IsRunning()) { +        if (thread == kernel.CurrentScheduler().GetCurrentThread()) {              SchedulePrepend(thread->current_priority, static_cast<u32>(thread->processor_id),                              thread);          } else { @@ -602,8 +600,6 @@ void Scheduler::SwitchContextStep2() {          previous_thread != nullptr ? previous_thread->GetOwnerProcess() : nullptr;      if (new_thread) { -        auto& cpu_core = system.ArmInterface(core_id); -        cpu_core.Lock();          ASSERT_MSG(new_thread->GetSchedulingStatus() == ThreadSchedStatus::Runnable,                     "Thread must be runnable."); @@ -615,6 +611,7 @@ void Scheduler::SwitchContextStep2() {              system.Kernel().MakeCurrentProcess(thread_owner_process);          }          if (!new_thread->IsHLEThread()) { +            auto& cpu_core = system.ArmInterface(core_id);              cpu_core.LoadContext(new_thread->GetContext32());              cpu_core.LoadContext(new_thread->GetContext64());              cpu_core.SetTlsAddress(new_thread->GetTLSAddress()); @@ -646,8 +643,8 @@ void Scheduler::SwitchContext() {      // Save context for previous thread      if (previous_thread) { -        auto& cpu_core = system.ArmInterface(core_id);          if (!previous_thread->IsHLEThread()) { +            auto& cpu_core = system.ArmInterface(core_id);              cpu_core.SaveContext(previous_thread->GetContext32());              cpu_core.SaveContext(previous_thread->GetContext64());              // Save the TPIDR_EL0 system register in case it was modified. @@ -659,7 +656,6 @@ void Scheduler::SwitchContext() {          }          previous_thread->SetIsRunning(false);          previous_thread->context_guard.unlock(); -        cpu_core.Unlock();      }      std::shared_ptr<Common::Fiber> old_context;  | 
