summaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/thread.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/hle/kernel/thread.cpp')
-rw-r--r--src/core/hle/kernel/thread.cpp17
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
52void Thread::Stop() { 52void 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
70void Thread::ResumeFromWait() { 70void 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
102void Thread::OnWakeUp() { 102void Thread::OnWakeUp() {
103 SchedulerLock lock(kernel); 103 KScopedSchedulerLock lock(kernel);
104
105 SetStatus(ThreadStatus::Ready); 104 SetStatus(ThreadStatus::Ready);
106} 105}
107 106
108ResultCode Thread::Start() { 107ResultCode 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
114void Thread::CancelWait() { 113void 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
230void Thread::SetPriority(u32 priority) { 229void 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
367ResultCode Thread::SetActivity(ThreadActivity value) { 366ResultCode 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
437ResultCode Thread::SetCoreAndAffinityMask(s32 new_core, u64 new_affinity_mask) { 436ResultCode 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) {