|
|
|
@ -635,9 +635,10 @@ static ResultCode SignalProcessWideKey(VAddr condition_variable_addr, s32 target |
|
|
|
condition_variable_addr, target); |
|
|
|
|
|
|
|
u32 processed = 0; |
|
|
|
auto& thread_list = Core::System::GetInstance().CurrentScheduler().GetThreadList(); |
|
|
|
|
|
|
|
for (auto& thread : thread_list) { |
|
|
|
auto signal_process_wide_key = [&](size_t core_index) { |
|
|
|
const auto& scheduler = Core::System::GetInstance().Scheduler(core_index); |
|
|
|
for (auto& thread : scheduler->GetThreadList()) { |
|
|
|
if (thread->condvar_wait_address != condition_variable_addr) |
|
|
|
continue; |
|
|
|
|
|
|
|
@ -682,6 +683,12 @@ static ResultCode SignalProcessWideKey(VAddr condition_variable_addr, s32 target |
|
|
|
|
|
|
|
++processed; |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
signal_process_wide_key(0); |
|
|
|
signal_process_wide_key(1); |
|
|
|
signal_process_wide_key(2); |
|
|
|
signal_process_wide_key(3); |
|
|
|
|
|
|
|
return RESULT_SUCCESS; |
|
|
|
} |
|
|
|
|