|
|
@ -102,7 +102,7 @@ struct KernelCore::Impl { |
|
|
next_user_process_id = KProcess::ProcessIDMin; |
|
|
next_user_process_id = KProcess::ProcessIDMin; |
|
|
next_thread_id = 1; |
|
|
next_thread_id = 1; |
|
|
|
|
|
|
|
|
for (s32 core_id = 0; core_id < Core::Hardware::NUM_CPU_CORES; core_id++) { |
|
|
|
|
|
|
|
|
for (u32 core_id = 0; core_id < Core::Hardware::NUM_CPU_CORES; core_id++) { |
|
|
if (suspend_threads[core_id]) { |
|
|
if (suspend_threads[core_id]) { |
|
|
suspend_threads[core_id]->Close(); |
|
|
suspend_threads[core_id]->Close(); |
|
|
suspend_threads[core_id] = nullptr; |
|
|
suspend_threads[core_id] = nullptr; |
|
|
@ -211,7 +211,7 @@ struct KernelCore::Impl { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void InitializeSuspendThreads() { |
|
|
void InitializeSuspendThreads() { |
|
|
for (s32 core_id = 0; core_id < Core::Hardware::NUM_CPU_CORES; core_id++) { |
|
|
|
|
|
|
|
|
for (u32 core_id = 0; core_id < Core::Hardware::NUM_CPU_CORES; core_id++) { |
|
|
suspend_threads[core_id] = KThread::Create(system.Kernel()); |
|
|
suspend_threads[core_id] = KThread::Create(system.Kernel()); |
|
|
ASSERT(KThread::InitializeHighPriorityThread(system, suspend_threads[core_id], {}, {}, |
|
|
ASSERT(KThread::InitializeHighPriorityThread(system, suspend_threads[core_id], {}, {}, |
|
|
core_id) |
|
|
core_id) |
|
|
@ -953,7 +953,7 @@ void KernelCore::Suspend(bool in_suspention) { |
|
|
{ |
|
|
{ |
|
|
KScopedSchedulerLock lock(*this); |
|
|
KScopedSchedulerLock lock(*this); |
|
|
const auto state = should_suspend ? ThreadState::Runnable : ThreadState::Waiting; |
|
|
const auto state = should_suspend ? ThreadState::Runnable : ThreadState::Waiting; |
|
|
for (s32 core_id = 0; core_id < Core::Hardware::NUM_CPU_CORES; core_id++) { |
|
|
|
|
|
|
|
|
for (u32 core_id = 0; core_id < Core::Hardware::NUM_CPU_CORES; core_id++) { |
|
|
impl->suspend_threads[core_id]->SetState(state); |
|
|
impl->suspend_threads[core_id]->SetState(state); |
|
|
impl->suspend_threads[core_id]->SetWaitReasonForDebugging( |
|
|
impl->suspend_threads[core_id]->SetWaitReasonForDebugging( |
|
|
ThreadWaitReasonForDebugging::Suspended); |
|
|
ThreadWaitReasonForDebugging::Suspended); |
|
|
|