diff options
Diffstat (limited to 'src/core/cpu_manager.h')
| -rw-r--r-- | src/core/cpu_manager.h | 19 |
1 files changed, 6 insertions, 13 deletions
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: | |||
| 46 | void Initialize(); | 46 | void Initialize(); |
| 47 | void Shutdown(); | 47 | void Shutdown(); |
| 48 | 48 | ||
| 49 | void Pause(bool paused); | ||
| 50 | |||
| 51 | static std::function<void(void*)> GetGuestThreadStartFunc(); | 49 | static std::function<void(void*)> GetGuestThreadStartFunc(); |
| 52 | static std::function<void(void*)> GetIdleThreadStartFunc(); | 50 | static std::function<void(void*)> GetIdleThreadStartFunc(); |
| 53 | static std::function<void(void*)> GetSuspendThreadStartFunc(); | 51 | static std::function<void(void*)> GetShutdownThreadStartFunc(); |
| 54 | void* GetStartFuncParamater(); | 52 | void* GetStartFuncParameter(); |
| 55 | 53 | ||
| 56 | void PreemptSingleCore(bool from_running_enviroment = true); | 54 | void PreemptSingleCore(bool from_running_enviroment = true); |
| 57 | 55 | ||
| @@ -63,38 +61,33 @@ private: | |||
| 63 | static void GuestThreadFunction(void* cpu_manager); | 61 | static void GuestThreadFunction(void* cpu_manager); |
| 64 | static void GuestRewindFunction(void* cpu_manager); | 62 | static void GuestRewindFunction(void* cpu_manager); |
| 65 | static void IdleThreadFunction(void* cpu_manager); | 63 | static void IdleThreadFunction(void* cpu_manager); |
| 66 | static void SuspendThreadFunction(void* cpu_manager); | 64 | static void ShutdownThreadFunction(void* cpu_manager); |
| 67 | 65 | ||
| 68 | void MultiCoreRunGuestThread(); | 66 | void MultiCoreRunGuestThread(); |
| 69 | void MultiCoreRunGuestLoop(); | 67 | void MultiCoreRunGuestLoop(); |
| 70 | void MultiCoreRunIdleThread(); | 68 | void MultiCoreRunIdleThread(); |
| 71 | void MultiCoreRunSuspendThread(); | ||
| 72 | 69 | ||
| 73 | void SingleCoreRunGuestThread(); | 70 | void SingleCoreRunGuestThread(); |
| 74 | void SingleCoreRunGuestLoop(); | 71 | void SingleCoreRunGuestLoop(); |
| 75 | void SingleCoreRunIdleThread(); | 72 | void SingleCoreRunIdleThread(); |
| 76 | void SingleCoreRunSuspendThread(); | ||
| 77 | 73 | ||
| 78 | static void ThreadStart(std::stop_token stop_token, CpuManager& cpu_manager, std::size_t core); | 74 | static void ThreadStart(std::stop_token stop_token, CpuManager& cpu_manager, std::size_t core); |
| 79 | 75 | ||
| 80 | void RunThread(std::stop_token stop_token, std::size_t core); | 76 | void ShutdownThread(); |
| 77 | void RunThread(std::size_t core); | ||
| 81 | 78 | ||
| 82 | struct CoreData { | 79 | struct CoreData { |
| 83 | std::shared_ptr<Common::Fiber> host_context; | 80 | std::shared_ptr<Common::Fiber> host_context; |
| 84 | std::jthread host_thread; | 81 | std::jthread host_thread; |
| 85 | }; | 82 | }; |
| 86 | 83 | ||
| 87 | std::atomic<bool> running_mode{}; | ||
| 88 | std::atomic<bool> pause_state{}; | ||
| 89 | std::unique_ptr<Common::Barrier> pause_barrier{}; | ||
| 90 | std::mutex pause_lock{}; | ||
| 91 | |||
| 92 | std::array<CoreData, Core::Hardware::NUM_CPU_CORES> core_data{}; | 84 | std::array<CoreData, Core::Hardware::NUM_CPU_CORES> core_data{}; |
| 93 | 85 | ||
| 94 | bool is_async_gpu{}; | 86 | bool is_async_gpu{}; |
| 95 | bool is_multicore{}; | 87 | bool is_multicore{}; |
| 96 | std::atomic<std::size_t> current_core{}; | 88 | std::atomic<std::size_t> current_core{}; |
| 97 | std::size_t idle_count{}; | 89 | std::size_t idle_count{}; |
| 90 | std::size_t num_cores{}; | ||
| 98 | static constexpr std::size_t max_cycle_runs = 5; | 91 | static constexpr std::size_t max_cycle_runs = 5; |
| 99 | 92 | ||
| 100 | System& system; | 93 | System& system; |