aboutsummaryrefslogtreecommitdiff
path: root/src/core/core.cpp
diff options
context:
space:
mode:
authorLiam <byteslice@airmail.cc>2022-06-13 18:36:30 -0400
committerLiam <byteslice@airmail.cc>2022-06-14 10:04:11 -0400
commit888f499188cb869dc8f8f1597c46add65c005324 (patch)
tree2abcaaf69fcb2c15352c99add7a97c9eea567486 /src/core/core.cpp
parentc6e7ca562ac4c8957d64f7d9161aa53ca43a96ff (diff)
kernel: implement KProcess suspension
Diffstat (limited to 'src/core/core.cpp')
-rw-r--r--src/core/core.cpp18
1 files changed, 8 insertions, 10 deletions
diff --git a/src/core/core.cpp b/src/core/core.cpp
index 954136adb6..7723d9782a 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<std::mutex> StallCPU() {
+ std::unique_lock<std::mutex> StallProcesses() {
std::unique_lock<std::mutex> 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<std::mutex> System::StallCPU() {
- return impl->StallCPU();
+std::unique_lock<std::mutex> System::StallProcesses() {
+ return impl->StallProcesses();
}
-void System::UnstallCPU() {
- impl->UnstallCPU();
+void System::UnstallProcesses() {
+ impl->UnstallProcesses();
}
void System::InitializeDebugger() {