diff options
author | Fernando Sahmkow <fsahmkow27@gmail.com> | 2019-10-12 14:21:51 +0200 |
---|---|---|
committer | FernandoS27 <fsahmkow27@gmail.com> | 2019-10-15 17:55:24 +0200 |
commit | 25f8606a6dab595eb7a92fce9be32e0489079964 (patch) | |
tree | 66ab40014264b8ef8567831ba438e29dd672b255 /src/core/hle | |
parent | Kernel_Thread: Eliminate most global accessors. (diff) | |
download | yuzu-25f8606a6dab595eb7a92fce9be32e0489079964.tar yuzu-25f8606a6dab595eb7a92fce9be32e0489079964.tar.gz yuzu-25f8606a6dab595eb7a92fce9be32e0489079964.tar.bz2 yuzu-25f8606a6dab595eb7a92fce9be32e0489079964.tar.lz yuzu-25f8606a6dab595eb7a92fce9be32e0489079964.tar.xz yuzu-25f8606a6dab595eb7a92fce9be32e0489079964.tar.zst yuzu-25f8606a6dab595eb7a92fce9be32e0489079964.zip |
Diffstat (limited to 'src/core/hle')
-rw-r--r-- | src/core/hle/kernel/kernel.cpp | 2 | ||||
-rw-r--r-- | src/core/hle/kernel/scheduler.cpp | 8 | ||||
-rw-r--r-- | src/core/hle/kernel/scheduler.h | 7 |
3 files changed, 17 insertions, 0 deletions
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp index 002c5af2b..0d6286f84 100644 --- a/src/core/hle/kernel/kernel.cpp +++ b/src/core/hle/kernel/kernel.cpp @@ -116,6 +116,8 @@ struct KernelCore::Impl { thread_wakeup_event_type = nullptr; preemption_event = nullptr; + global_scheduler.Shutdown(); + named_ports.clear(); } diff --git a/src/core/hle/kernel/scheduler.cpp b/src/core/hle/kernel/scheduler.cpp index 226d15d88..122106267 100644 --- a/src/core/hle/kernel/scheduler.cpp +++ b/src/core/hle/kernel/scheduler.cpp @@ -342,6 +342,14 @@ bool GlobalScheduler::AskForReselectionOrMarkRedundant(Thread* current_thread, T } } +void GlobalScheduler::Shutdown() { + for (std::size_t core = 0; core < NUM_CPU_CORES; core++) { + scheduled_queue[core].clear(); + suggested_queue[core].clear(); + } + thread_list.clear(); +} + GlobalScheduler::~GlobalScheduler() = default; Scheduler::Scheduler(Core::System& system, Core::ARM_Interface& cpu_core, u32 core_id) diff --git a/src/core/hle/kernel/scheduler.h b/src/core/hle/kernel/scheduler.h index 408e20c88..617553ae3 100644 --- a/src/core/hle/kernel/scheduler.h +++ b/src/core/hle/kernel/scheduler.h @@ -147,6 +147,8 @@ public: return reselection_pending.load(); } + void Shutdown(); + private: bool AskForReselectionOrMarkRedundant(Thread* current_thread, Thread* winner); @@ -189,6 +191,11 @@ public: return context_switch_pending; } + void Shutdown() { + current_thread = nullptr; + selected_thread = nullptr; + } + private: friend class GlobalScheduler; /** |