cpu_manager.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. // Copyright 2018 yuzu emulator team
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #pragma once
  5. #include <array>
  6. #include <memory>
  7. #include "core/hardware_properties.h"
  8. namespace Core {
  9. class CoreManager;
  10. class System;
  11. class CpuManager {
  12. public:
  13. explicit CpuManager(System& system);
  14. CpuManager(const CpuManager&) = delete;
  15. CpuManager(CpuManager&&) = delete;
  16. ~CpuManager();
  17. CpuManager& operator=(const CpuManager&) = delete;
  18. CpuManager& operator=(CpuManager&&) = delete;
  19. void Initialize();
  20. void Shutdown();
  21. CoreManager& GetCoreManager(std::size_t index);
  22. const CoreManager& GetCoreManager(std::size_t index) const;
  23. CoreManager& GetCurrentCoreManager();
  24. const CoreManager& GetCurrentCoreManager() const;
  25. std::size_t GetActiveCoreIndex() const {
  26. return active_core;
  27. }
  28. void RunLoop(bool tight_loop);
  29. private:
  30. std::array<std::unique_ptr<CoreManager>, Hardware::NUM_CPU_CORES> core_managers;
  31. std::size_t active_core{}; ///< Active core, only used in single thread mode
  32. System& system;
  33. };
  34. } // namespace Core