From 888f499188cb869dc8f8f1597c46add65c005324 Mon Sep 17 00:00:00 2001 From: Liam Date: Mon, 13 Jun 2022 18:36:30 -0400 Subject: kernel: implement KProcess suspension --- src/core/core.cpp | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) (limited to 'src/core/core.cpp') diff --git a/src/core/core.cpp b/src/core/core.cpp index 954136adb..7723d9782 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp @@ -138,7 +138,6 @@ struct System::Impl { kernel.Suspend(false); core_timing.SyncPause(false); - cpu_manager.Pause(false); is_paused = false; return status; @@ -150,25 +149,22 @@ struct System::Impl { core_timing.SyncPause(true); kernel.Suspend(true); - cpu_manager.Pause(true); is_paused = true; return status; } - std::unique_lock StallCPU() { + std::unique_lock StallProcesses() { std::unique_lock lk(suspend_guard); kernel.Suspend(true); core_timing.SyncPause(true); - cpu_manager.Pause(true); return lk; } - void UnstallCPU() { + void UnstallProcesses() { if (!is_paused) { core_timing.SyncPause(false); kernel.Suspend(false); - cpu_manager.Pause(false); } } @@ -334,6 +330,8 @@ struct System::Impl { gpu_core->NotifyShutdown(); } + kernel.ShutdownCores(); + cpu_manager.Shutdown(); debugger.reset(); services.reset(); service_manager.reset(); @@ -499,12 +497,12 @@ void System::DetachDebugger() { } } -std::unique_lock System::StallCPU() { - return impl->StallCPU(); +std::unique_lock System::StallProcesses() { + return impl->StallProcesses(); } -void System::UnstallCPU() { - impl->UnstallCPU(); +void System::UnstallProcesses() { + impl->UnstallProcesses(); } void System::InitializeDebugger() { -- cgit v1.2.3