diff options
| author | 2018-10-16 11:21:42 -0400 | |
|---|---|---|
| committer | 2018-10-16 11:21:42 -0400 | |
| commit | 88b8383da28f05b2a30ba853b0578fe625f7dba6 (patch) | |
| tree | f9224c0af9d0ddcc1e2496b638a6108077fcd198 /src/core/hle/kernel/thread.cpp | |
| parent | Merge pull request #1508 from lioncash/unique-reg (diff) | |
| parent | core_cpu: Make Cpu scheduler instances unique_ptrs instead of shared_ptrs (diff) | |
| download | yuzu-88b8383da28f05b2a30ba853b0578fe625f7dba6.tar.gz yuzu-88b8383da28f05b2a30ba853b0578fe625f7dba6.tar.xz yuzu-88b8383da28f05b2a30ba853b0578fe625f7dba6.zip | |
Merge pull request #1502 from lioncash/unique
core: Convert shared_ptr instances into unique_ptr instances where applicable for System and Cpu
Diffstat (limited to 'src/core/hle/kernel/thread.cpp')
| -rw-r--r-- | src/core/hle/kernel/thread.cpp | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/src/core/hle/kernel/thread.cpp b/src/core/hle/kernel/thread.cpp index 352ce1725..35ec98c1a 100644 --- a/src/core/hle/kernel/thread.cpp +++ b/src/core/hle/kernel/thread.cpp | |||
| @@ -97,7 +97,7 @@ void Thread::CancelWakeupTimer() { | |||
| 97 | static boost::optional<s32> GetNextProcessorId(u64 mask) { | 97 | static boost::optional<s32> GetNextProcessorId(u64 mask) { |
| 98 | for (s32 index = 0; index < Core::NUM_CPU_CORES; ++index) { | 98 | for (s32 index = 0; index < Core::NUM_CPU_CORES; ++index) { |
| 99 | if (mask & (1ULL << index)) { | 99 | if (mask & (1ULL << index)) { |
| 100 | if (!Core::System::GetInstance().Scheduler(index)->GetCurrentThread()) { | 100 | if (!Core::System::GetInstance().Scheduler(index).GetCurrentThread()) { |
| 101 | // Core is enabled and not running any threads, use this one | 101 | // Core is enabled and not running any threads, use this one |
| 102 | return index; | 102 | return index; |
| 103 | } | 103 | } |
| @@ -147,14 +147,14 @@ void Thread::ResumeFromWait() { | |||
| 147 | new_processor_id = processor_id; | 147 | new_processor_id = processor_id; |
| 148 | } | 148 | } |
| 149 | if (ideal_core != -1 && | 149 | if (ideal_core != -1 && |
| 150 | Core::System::GetInstance().Scheduler(ideal_core)->GetCurrentThread() == nullptr) { | 150 | Core::System::GetInstance().Scheduler(ideal_core).GetCurrentThread() == nullptr) { |
| 151 | new_processor_id = ideal_core; | 151 | new_processor_id = ideal_core; |
| 152 | } | 152 | } |
| 153 | 153 | ||
| 154 | ASSERT(*new_processor_id < 4); | 154 | ASSERT(*new_processor_id < 4); |
| 155 | 155 | ||
| 156 | // Add thread to new core's scheduler | 156 | // Add thread to new core's scheduler |
| 157 | auto& next_scheduler = Core::System::GetInstance().Scheduler(*new_processor_id); | 157 | auto* next_scheduler = &Core::System::GetInstance().Scheduler(*new_processor_id); |
| 158 | 158 | ||
| 159 | if (*new_processor_id != processor_id) { | 159 | if (*new_processor_id != processor_id) { |
| 160 | // Remove thread from previous core's scheduler | 160 | // Remove thread from previous core's scheduler |
| @@ -169,7 +169,7 @@ void Thread::ResumeFromWait() { | |||
| 169 | next_scheduler->ScheduleThread(this, current_priority); | 169 | next_scheduler->ScheduleThread(this, current_priority); |
| 170 | 170 | ||
| 171 | // Change thread's scheduler | 171 | // Change thread's scheduler |
| 172 | scheduler = next_scheduler.get(); | 172 | scheduler = next_scheduler; |
| 173 | 173 | ||
| 174 | Core::System::GetInstance().CpuCore(processor_id).PrepareReschedule(); | 174 | Core::System::GetInstance().CpuCore(processor_id).PrepareReschedule(); |
| 175 | } | 175 | } |
| @@ -230,7 +230,7 @@ ResultVal<SharedPtr<Thread>> Thread::Create(KernelCore& kernel, std::string name | |||
| 230 | thread->name = std::move(name); | 230 | thread->name = std::move(name); |
| 231 | thread->callback_handle = kernel.ThreadWakeupCallbackHandleTable().Create(thread).Unwrap(); | 231 | thread->callback_handle = kernel.ThreadWakeupCallbackHandleTable().Create(thread).Unwrap(); |
| 232 | thread->owner_process = &owner_process; | 232 | thread->owner_process = &owner_process; |
| 233 | thread->scheduler = Core::System::GetInstance().Scheduler(processor_id).get(); | 233 | thread->scheduler = &Core::System::GetInstance().Scheduler(processor_id); |
| 234 | thread->scheduler->AddThread(thread, priority); | 234 | thread->scheduler->AddThread(thread, priority); |
| 235 | thread->tls_address = thread->owner_process->MarkNextAvailableTLSSlotAsUsed(*thread); | 235 | thread->tls_address = thread->owner_process->MarkNextAvailableTLSSlotAsUsed(*thread); |
| 236 | 236 | ||
| @@ -375,14 +375,14 @@ void Thread::ChangeCore(u32 core, u64 mask) { | |||
| 375 | new_processor_id = processor_id; | 375 | new_processor_id = processor_id; |
| 376 | } | 376 | } |
| 377 | if (ideal_core != -1 && | 377 | if (ideal_core != -1 && |
| 378 | Core::System::GetInstance().Scheduler(ideal_core)->GetCurrentThread() == nullptr) { | 378 | Core::System::GetInstance().Scheduler(ideal_core).GetCurrentThread() == nullptr) { |
| 379 | new_processor_id = ideal_core; | 379 | new_processor_id = ideal_core; |
| 380 | } | 380 | } |
| 381 | 381 | ||
| 382 | ASSERT(*new_processor_id < 4); | 382 | ASSERT(*new_processor_id < 4); |
| 383 | 383 | ||
| 384 | // Add thread to new core's scheduler | 384 | // Add thread to new core's scheduler |
| 385 | auto& next_scheduler = Core::System::GetInstance().Scheduler(*new_processor_id); | 385 | auto* next_scheduler = &Core::System::GetInstance().Scheduler(*new_processor_id); |
| 386 | 386 | ||
| 387 | if (*new_processor_id != processor_id) { | 387 | if (*new_processor_id != processor_id) { |
| 388 | // Remove thread from previous core's scheduler | 388 | // Remove thread from previous core's scheduler |
| @@ -397,7 +397,7 @@ void Thread::ChangeCore(u32 core, u64 mask) { | |||
| 397 | next_scheduler->ScheduleThread(this, current_priority); | 397 | next_scheduler->ScheduleThread(this, current_priority); |
| 398 | 398 | ||
| 399 | // Change thread's scheduler | 399 | // Change thread's scheduler |
| 400 | scheduler = next_scheduler.get(); | 400 | scheduler = next_scheduler; |
| 401 | 401 | ||
| 402 | Core::System::GetInstance().CpuCore(processor_id).PrepareReschedule(); | 402 | Core::System::GetInstance().CpuCore(processor_id).PrepareReschedule(); |
| 403 | } | 403 | } |