summaryrefslogtreecommitdiff
path: root/src/core/hle/kernel
diff options
context:
space:
mode:
authorGravatar bunnei2021-04-09 16:56:11 -0700
committerGravatar bunnei2021-05-05 16:40:51 -0700
commitab704acab80d17f9a8e34dcbb753d60de2a86f86 (patch)
tree41b84d29f755f19f2222bef358631f88c6f2152f /src/core/hle/kernel
parenthle: kernel: Use unique_ptr for suspend and dummy threads. (diff)
downloadyuzu-ab704acab80d17f9a8e34dcbb753d60de2a86f86.tar.gz
yuzu-ab704acab80d17f9a8e34dcbb753d60de2a86f86.tar.xz
yuzu-ab704acab80d17f9a8e34dcbb753d60de2a86f86.zip
hle: kernel: Ensure all kernel objects with KAutoObject are properly created.
Diffstat (limited to 'src/core/hle/kernel')
-rw-r--r--src/core/hle/kernel/k_scheduler.cpp1
-rw-r--r--src/core/hle/kernel/kernel.cpp7
2 files changed, 8 insertions, 0 deletions
diff --git a/src/core/hle/kernel/k_scheduler.cpp b/src/core/hle/kernel/k_scheduler.cpp
index c048d86a3..09382f7dd 100644
--- a/src/core/hle/kernel/k_scheduler.cpp
+++ b/src/core/hle/kernel/k_scheduler.cpp
@@ -793,6 +793,7 @@ void KScheduler::UpdateLastContextSwitchTime(KThread* thread, Process* process)
793 793
794void KScheduler::Initialize() { 794void KScheduler::Initialize() {
795 idle_thread = std::make_unique<KThread>(system.Kernel()); 795 idle_thread = std::make_unique<KThread>(system.Kernel());
796 KAutoObject::Create(idle_thread.get());
796 ASSERT(KThread::InitializeIdleThread(system, idle_thread.get(), core_id).IsSuccess()); 797 ASSERT(KThread::InitializeIdleThread(system, idle_thread.get(), core_id).IsSuccess());
797 idle_thread->SetName(fmt::format("IdleThread:{}", core_id)); 798 idle_thread->SetName(fmt::format("IdleThread:{}", core_id));
798} 799}
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp
index 1249a4c96..43bce1863 100644
--- a/src/core/hle/kernel/kernel.cpp
+++ b/src/core/hle/kernel/kernel.cpp
@@ -196,6 +196,7 @@ struct KernelCore::Impl {
196 void InitializeSuspendThreads() { 196 void InitializeSuspendThreads() {
197 for (s32 core_id = 0; core_id < Core::Hardware::NUM_CPU_CORES; core_id++) { 197 for (s32 core_id = 0; core_id < Core::Hardware::NUM_CPU_CORES; core_id++) {
198 suspend_threads[core_id] = std::make_unique<KThread>(system.Kernel()); 198 suspend_threads[core_id] = std::make_unique<KThread>(system.Kernel());
199 KAutoObject::Create(suspend_threads[core_id].get());
199 ASSERT(KThread::InitializeHighPriorityThread(system, suspend_threads[core_id].get(), {}, 200 ASSERT(KThread::InitializeHighPriorityThread(system, suspend_threads[core_id].get(), {},
200 {}, core_id) 201 {}, core_id)
201 .IsSuccess()); 202 .IsSuccess());
@@ -236,6 +237,7 @@ struct KernelCore::Impl {
236 KThread* GetHostDummyThread() { 237 KThread* GetHostDummyThread() {
237 auto make_thread = [this]() { 238 auto make_thread = [this]() {
238 std::unique_ptr<KThread> thread = std::make_unique<KThread>(system.Kernel()); 239 std::unique_ptr<KThread> thread = std::make_unique<KThread>(system.Kernel());
240 KAutoObject::Create(thread.get());
239 ASSERT(KThread::InitializeDummyThread(thread.get()).IsSuccess()); 241 ASSERT(KThread::InitializeDummyThread(thread.get()).IsSuccess());
240 thread->SetName(fmt::format("DummyThread:{}", GetHostThreadId())); 242 thread->SetName(fmt::format("DummyThread:{}", GetHostThreadId()));
241 return std::move(thread); 243 return std::move(thread);
@@ -580,6 +582,11 @@ struct KernelCore::Impl {
580 irs_shared_mem = std::make_unique<KSharedMemory>(system.Kernel()); 582 irs_shared_mem = std::make_unique<KSharedMemory>(system.Kernel());
581 time_shared_mem = std::make_unique<KSharedMemory>(system.Kernel()); 583 time_shared_mem = std::make_unique<KSharedMemory>(system.Kernel());
582 584
585 KAutoObject::Create(hid_shared_mem.get());
586 KAutoObject::Create(font_shared_mem.get());
587 KAutoObject::Create(irs_shared_mem.get());
588 KAutoObject::Create(time_shared_mem.get());
589
583 hid_shared_mem->Initialize(system.Kernel(), system.DeviceMemory(), nullptr, 590 hid_shared_mem->Initialize(system.Kernel(), system.DeviceMemory(), nullptr,
584 {hid_phys_addr, hid_size / PageSize}, KMemoryPermission::None, 591 {hid_phys_addr, hid_size / PageSize}, KMemoryPermission::None,
585 KMemoryPermission::Read, hid_phys_addr, hid_size, 592 KMemoryPermission::Read, hid_phys_addr, hid_size,