diff options
Diffstat (limited to 'src/core/hle/kernel/thread.cpp')
| -rw-r--r-- | src/core/hle/kernel/thread.cpp | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/src/core/hle/kernel/thread.cpp b/src/core/hle/kernel/thread.cpp index 6f89238ca..a4f9e0d97 100644 --- a/src/core/hle/kernel/thread.cpp +++ b/src/core/hle/kernel/thread.cpp | |||
| @@ -51,7 +51,7 @@ Thread::~Thread() = default; | |||
| 51 | 51 | ||
| 52 | void Thread::Stop() { | 52 | void Thread::Stop() { |
| 53 | { | 53 | { |
| 54 | SchedulerLock lock(kernel); | 54 | KScopedSchedulerLock lock(kernel); |
| 55 | SetStatus(ThreadStatus::Dead); | 55 | SetStatus(ThreadStatus::Dead); |
| 56 | Signal(); | 56 | Signal(); |
| 57 | kernel.GlobalHandleTable().Close(global_handle); | 57 | kernel.GlobalHandleTable().Close(global_handle); |
| @@ -68,7 +68,7 @@ void Thread::Stop() { | |||
| 68 | } | 68 | } |
| 69 | 69 | ||
| 70 | void Thread::ResumeFromWait() { | 70 | void Thread::ResumeFromWait() { |
| 71 | SchedulerLock lock(kernel); | 71 | KScopedSchedulerLock lock(kernel); |
| 72 | switch (status) { | 72 | switch (status) { |
| 73 | case ThreadStatus::Paused: | 73 | case ThreadStatus::Paused: |
| 74 | case ThreadStatus::WaitSynch: | 74 | case ThreadStatus::WaitSynch: |
| @@ -100,19 +100,18 @@ void Thread::ResumeFromWait() { | |||
| 100 | } | 100 | } |
| 101 | 101 | ||
| 102 | void Thread::OnWakeUp() { | 102 | void Thread::OnWakeUp() { |
| 103 | SchedulerLock lock(kernel); | 103 | KScopedSchedulerLock lock(kernel); |
| 104 | |||
| 105 | SetStatus(ThreadStatus::Ready); | 104 | SetStatus(ThreadStatus::Ready); |
| 106 | } | 105 | } |
| 107 | 106 | ||
| 108 | ResultCode Thread::Start() { | 107 | ResultCode Thread::Start() { |
| 109 | SchedulerLock lock(kernel); | 108 | KScopedSchedulerLock lock(kernel); |
| 110 | SetStatus(ThreadStatus::Ready); | 109 | SetStatus(ThreadStatus::Ready); |
| 111 | return RESULT_SUCCESS; | 110 | return RESULT_SUCCESS; |
| 112 | } | 111 | } |
| 113 | 112 | ||
| 114 | void Thread::CancelWait() { | 113 | void Thread::CancelWait() { |
| 115 | SchedulerLock lock(kernel); | 114 | KScopedSchedulerLock lock(kernel); |
| 116 | if (GetSchedulingStatus() != ThreadSchedStatus::Paused || !is_waiting_on_sync) { | 115 | if (GetSchedulingStatus() != ThreadSchedStatus::Paused || !is_waiting_on_sync) { |
| 117 | is_sync_cancelled = true; | 116 | is_sync_cancelled = true; |
| 118 | return; | 117 | return; |
| @@ -228,7 +227,7 @@ ResultVal<std::shared_ptr<Thread>> Thread::Create(Core::System& system, ThreadTy | |||
| 228 | } | 227 | } |
| 229 | 228 | ||
| 230 | void Thread::SetPriority(u32 priority) { | 229 | void Thread::SetPriority(u32 priority) { |
| 231 | SchedulerLock lock(kernel); | 230 | KScopedSchedulerLock lock(kernel); |
| 232 | ASSERT_MSG(priority <= THREADPRIO_LOWEST && priority >= THREADPRIO_HIGHEST, | 231 | ASSERT_MSG(priority <= THREADPRIO_LOWEST && priority >= THREADPRIO_HIGHEST, |
| 233 | "Invalid priority value."); | 232 | "Invalid priority value."); |
| 234 | nominal_priority = priority; | 233 | nominal_priority = priority; |
| @@ -365,7 +364,7 @@ bool Thread::InvokeHLECallback(std::shared_ptr<Thread> thread) { | |||
| 365 | } | 364 | } |
| 366 | 365 | ||
| 367 | ResultCode Thread::SetActivity(ThreadActivity value) { | 366 | ResultCode Thread::SetActivity(ThreadActivity value) { |
| 368 | SchedulerLock lock(kernel); | 367 | KScopedSchedulerLock lock(kernel); |
| 369 | 368 | ||
| 370 | auto sched_status = GetSchedulingStatus(); | 369 | auto sched_status = GetSchedulingStatus(); |
| 371 | 370 | ||
| @@ -435,7 +434,7 @@ void Thread::SetCurrentPriority(u32 new_priority) { | |||
| 435 | } | 434 | } |
| 436 | 435 | ||
| 437 | ResultCode Thread::SetCoreAndAffinityMask(s32 new_core, u64 new_affinity_mask) { | 436 | ResultCode Thread::SetCoreAndAffinityMask(s32 new_core, u64 new_affinity_mask) { |
| 438 | SchedulerLock lock(kernel); | 437 | KScopedSchedulerLock lock(kernel); |
| 439 | const auto HighestSetCore = [](u64 mask, u32 max_cores) { | 438 | const auto HighestSetCore = [](u64 mask, u32 max_cores) { |
| 440 | for (s32 core = static_cast<s32>(max_cores - 1); core >= 0; core--) { | 439 | for (s32 core = static_cast<s32>(max_cores - 1); core >= 0; core--) { |
| 441 | if (((mask >> core) & 1) != 0) { | 440 | if (((mask >> core) & 1) != 0) { |