summaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/kernel.cpp
diff options
context:
space:
mode:
authorGravatar bunnei2022-04-11 21:13:01 -0700
committerGravatar GitHub2022-04-11 21:13:01 -0700
commitfd5e1e80dac515ecb4a1cf9a12665b6645349370 (patch)
tree5ce6c5bc77fe663428b9b66d1990c3bd64332581 /src/core/hle/kernel/kernel.cpp
parentMerge pull request #8196 from jbeich/freebsd (diff)
parentk_system_control: Fix data race (diff)
downloadyuzu-fd5e1e80dac515ecb4a1cf9a12665b6645349370.tar.gz
yuzu-fd5e1e80dac515ecb4a1cf9a12665b6645349370.tar.xz
yuzu-fd5e1e80dac515ecb4a1cf9a12665b6645349370.zip
Merge pull request #8157 from lat9nq/kernel-races
kernel: Fix some data races
Diffstat (limited to 'src/core/hle/kernel/kernel.cpp')
-rw-r--r--src/core/hle/kernel/kernel.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp
index 134a0b8e9..481a0d7cb 100644
--- a/src/core/hle/kernel/kernel.cpp
+++ b/src/core/hle/kernel/kernel.cpp
@@ -85,7 +85,7 @@ struct KernelCore::Impl {
85 85
86 void InitializeCores() { 86 void InitializeCores() {
87 for (u32 core_id = 0; core_id < Core::Hardware::NUM_CPU_CORES; core_id++) { 87 for (u32 core_id = 0; core_id < Core::Hardware::NUM_CPU_CORES; core_id++) {
88 cores[core_id].Initialize(current_process->Is64BitProcess()); 88 cores[core_id].Initialize((*current_process).Is64BitProcess());
89 system.Memory().SetCurrentPageTable(*current_process, core_id); 89 system.Memory().SetCurrentPageTable(*current_process, core_id);
90 } 90 }
91 } 91 }
@@ -168,11 +168,11 @@ struct KernelCore::Impl {
168 168
169 // Shutdown all processes. 169 // Shutdown all processes.
170 if (current_process) { 170 if (current_process) {
171 current_process->Finalize(); 171 (*current_process).Finalize();
172 // current_process->Close(); 172 // current_process->Close();
173 // TODO: The current process should be destroyed based on accurate ref counting after 173 // TODO: The current process should be destroyed based on accurate ref counting after
174 // calling Close(). Adding a manual Destroy() call instead to avoid a memory leak. 174 // calling Close(). Adding a manual Destroy() call instead to avoid a memory leak.
175 current_process->Destroy(); 175 (*current_process).Destroy();
176 current_process = nullptr; 176 current_process = nullptr;
177 } 177 }
178 178
@@ -704,7 +704,7 @@ struct KernelCore::Impl {
704 704
705 // Lists all processes that exist in the current session. 705 // Lists all processes that exist in the current session.
706 std::vector<KProcess*> process_list; 706 std::vector<KProcess*> process_list;
707 KProcess* current_process{}; 707 std::atomic<KProcess*> current_process{};
708 std::unique_ptr<Kernel::GlobalSchedulerContext> global_scheduler_context; 708 std::unique_ptr<Kernel::GlobalSchedulerContext> global_scheduler_context;
709 Kernel::TimeManager time_manager; 709 Kernel::TimeManager time_manager;
710 710