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/cpu_manager.h | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) (limited to 'src/core/cpu_manager.h') diff --git a/src/core/cpu_manager.h b/src/core/cpu_manager.h index ddd9691ca..681bdaf19 100644 --- a/src/core/cpu_manager.h +++ b/src/core/cpu_manager.h @@ -46,12 +46,10 @@ public: void Initialize(); void Shutdown(); - void Pause(bool paused); - static std::function GetGuestThreadStartFunc(); static std::function GetIdleThreadStartFunc(); - static std::function GetSuspendThreadStartFunc(); - void* GetStartFuncParamater(); + static std::function GetShutdownThreadStartFunc(); + void* GetStartFuncParameter(); void PreemptSingleCore(bool from_running_enviroment = true); @@ -63,38 +61,33 @@ private: static void GuestThreadFunction(void* cpu_manager); static void GuestRewindFunction(void* cpu_manager); static void IdleThreadFunction(void* cpu_manager); - static void SuspendThreadFunction(void* cpu_manager); + static void ShutdownThreadFunction(void* cpu_manager); void MultiCoreRunGuestThread(); void MultiCoreRunGuestLoop(); void MultiCoreRunIdleThread(); - void MultiCoreRunSuspendThread(); void SingleCoreRunGuestThread(); void SingleCoreRunGuestLoop(); void SingleCoreRunIdleThread(); - void SingleCoreRunSuspendThread(); static void ThreadStart(std::stop_token stop_token, CpuManager& cpu_manager, std::size_t core); - void RunThread(std::stop_token stop_token, std::size_t core); + void ShutdownThread(); + void RunThread(std::size_t core); struct CoreData { std::shared_ptr host_context; std::jthread host_thread; }; - std::atomic running_mode{}; - std::atomic pause_state{}; - std::unique_ptr pause_barrier{}; - std::mutex pause_lock{}; - std::array core_data{}; bool is_async_gpu{}; bool is_multicore{}; std::atomic current_core{}; std::size_t idle_count{}; + std::size_t num_cores{}; static constexpr std::size_t max_cycle_runs = 5; System& system; -- cgit v1.2.3