diff options
| author | 2021-10-14 18:14:40 -0400 | |
|---|---|---|
| committer | 2021-10-15 17:34:49 -0400 | |
| commit | 17763a44d5426f7a3e52d6d4aebc26afb1d0ce65 (patch) | |
| tree | 71f31a3363f0412514277890275c973801583fec /src/core | |
| parent | yuzu_cmd: Remove remaining static system instances (diff) | |
| download | yuzu-17763a44d5426f7a3e52d6d4aebc26afb1d0ce65.tar.gz yuzu-17763a44d5426f7a3e52d6d4aebc26afb1d0ce65.tar.xz yuzu-17763a44d5426f7a3e52d6d4aebc26afb1d0ce65.zip | |
core: Move ResultStatus outside of System
Allows it to be a forward declaration in other header files.
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/core.cpp | 49 | ||||
| -rw-r--r-- | src/core/core.h | 39 |
2 files changed, 45 insertions, 43 deletions
diff --git a/src/core/core.cpp b/src/core/core.cpp index ae1d56b27..3532839df 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp | |||
| @@ -139,8 +139,8 @@ struct System::Impl { | |||
| 139 | : kernel{system}, fs_controller{system}, memory{system}, | 139 | : kernel{system}, fs_controller{system}, memory{system}, |
| 140 | cpu_manager{system}, reporter{system}, applet_manager{system}, time_manager{system} {} | 140 | cpu_manager{system}, reporter{system}, applet_manager{system}, time_manager{system} {} |
| 141 | 141 | ||
| 142 | ResultStatus Run() { | 142 | SystemResultStatus Run() { |
| 143 | status = ResultStatus::Success; | 143 | status = SystemResultStatus::Success; |
| 144 | 144 | ||
| 145 | kernel.Suspend(false); | 145 | kernel.Suspend(false); |
| 146 | core_timing.SyncPause(false); | 146 | core_timing.SyncPause(false); |
| @@ -149,8 +149,8 @@ struct System::Impl { | |||
| 149 | return status; | 149 | return status; |
| 150 | } | 150 | } |
| 151 | 151 | ||
| 152 | ResultStatus Pause() { | 152 | SystemResultStatus Pause() { |
| 153 | status = ResultStatus::Success; | 153 | status = SystemResultStatus::Success; |
| 154 | 154 | ||
| 155 | core_timing.SyncPause(true); | 155 | core_timing.SyncPause(true); |
| 156 | kernel.Suspend(true); | 156 | kernel.Suspend(true); |
| @@ -159,7 +159,7 @@ struct System::Impl { | |||
| 159 | return status; | 159 | return status; |
| 160 | } | 160 | } |
| 161 | 161 | ||
| 162 | ResultStatus Init(System& system, Frontend::EmuWindow& emu_window) { | 162 | SystemResultStatus Init(System& system, Frontend::EmuWindow& emu_window) { |
| 163 | LOG_DEBUG(Core, "initialized OK"); | 163 | LOG_DEBUG(Core, "initialized OK"); |
| 164 | 164 | ||
| 165 | device_memory = std::make_unique<Core::DeviceMemory>(); | 165 | device_memory = std::make_unique<Core::DeviceMemory>(); |
| @@ -197,7 +197,7 @@ struct System::Impl { | |||
| 197 | 197 | ||
| 198 | gpu_core = VideoCore::CreateGPU(emu_window, system); | 198 | gpu_core = VideoCore::CreateGPU(emu_window, system); |
| 199 | if (!gpu_core) { | 199 | if (!gpu_core) { |
| 200 | return ResultStatus::ErrorVideoCore; | 200 | return SystemResultStatus::ErrorVideoCore; |
| 201 | } | 201 | } |
| 202 | 202 | ||
| 203 | service_manager = std::make_shared<Service::SM::ServiceManager>(kernel); | 203 | service_manager = std::make_shared<Service::SM::ServiceManager>(kernel); |
| @@ -217,21 +217,22 @@ struct System::Impl { | |||
| 217 | 217 | ||
| 218 | LOG_DEBUG(Core, "Initialized OK"); | 218 | LOG_DEBUG(Core, "Initialized OK"); |
| 219 | 219 | ||
| 220 | return ResultStatus::Success; | 220 | return SystemResultStatus::Success; |
| 221 | } | 221 | } |
| 222 | 222 | ||
| 223 | ResultStatus Load(System& system, Frontend::EmuWindow& emu_window, const std::string& filepath, | 223 | SystemResultStatus Load(System& system, Frontend::EmuWindow& emu_window, |
| 224 | u64 program_id, std::size_t program_index) { | 224 | const std::string& filepath, u64 program_id, |
| 225 | std::size_t program_index) { | ||
| 225 | app_loader = Loader::GetLoader(system, GetGameFileFromPath(virtual_filesystem, filepath), | 226 | app_loader = Loader::GetLoader(system, GetGameFileFromPath(virtual_filesystem, filepath), |
| 226 | program_id, program_index); | 227 | program_id, program_index); |
| 227 | 228 | ||
| 228 | if (!app_loader) { | 229 | if (!app_loader) { |
| 229 | LOG_CRITICAL(Core, "Failed to obtain loader for {}!", filepath); | 230 | LOG_CRITICAL(Core, "Failed to obtain loader for {}!", filepath); |
| 230 | return ResultStatus::ErrorGetLoader; | 231 | return SystemResultStatus::ErrorGetLoader; |
| 231 | } | 232 | } |
| 232 | 233 | ||
| 233 | ResultStatus init_result{Init(system, emu_window)}; | 234 | SystemResultStatus init_result{Init(system, emu_window)}; |
| 234 | if (init_result != ResultStatus::Success) { | 235 | if (init_result != SystemResultStatus::Success) { |
| 235 | LOG_CRITICAL(Core, "Failed to initialize system (Error {})!", | 236 | LOG_CRITICAL(Core, "Failed to initialize system (Error {})!", |
| 236 | static_cast<int>(init_result)); | 237 | static_cast<int>(init_result)); |
| 237 | Shutdown(); | 238 | Shutdown(); |
| @@ -249,8 +250,8 @@ struct System::Impl { | |||
| 249 | LOG_CRITICAL(Core, "Failed to load ROM (Error {})!", load_result); | 250 | LOG_CRITICAL(Core, "Failed to load ROM (Error {})!", load_result); |
| 250 | Shutdown(); | 251 | Shutdown(); |
| 251 | 252 | ||
| 252 | return static_cast<ResultStatus>(static_cast<u32>(ResultStatus::ErrorLoader) + | 253 | return static_cast<SystemResultStatus>( |
| 253 | static_cast<u32>(load_result)); | 254 | static_cast<u32>(SystemResultStatus::ErrorLoader) + static_cast<u32>(load_result)); |
| 254 | } | 255 | } |
| 255 | AddGlueRegistrationForProcess(*app_loader, *main_process); | 256 | AddGlueRegistrationForProcess(*app_loader, *main_process); |
| 256 | kernel.MakeCurrentProcess(main_process.get()); | 257 | kernel.MakeCurrentProcess(main_process.get()); |
| @@ -282,7 +283,7 @@ struct System::Impl { | |||
| 282 | GetAndResetPerfStats(); | 283 | GetAndResetPerfStats(); |
| 283 | perf_stats->BeginSystemFrame(); | 284 | perf_stats->BeginSystemFrame(); |
| 284 | 285 | ||
| 285 | status = ResultStatus::Success; | 286 | status = SystemResultStatus::Success; |
| 286 | return status; | 287 | return status; |
| 287 | } | 288 | } |
| 288 | 289 | ||
| @@ -355,7 +356,7 @@ struct System::Impl { | |||
| 355 | arp_manager.Register(launch.title_id, launch, std::move(nacp_data)); | 356 | arp_manager.Register(launch.title_id, launch, std::move(nacp_data)); |
| 356 | } | 357 | } |
| 357 | 358 | ||
| 358 | void SetStatus(ResultStatus new_status, const char* details = nullptr) { | 359 | void SetStatus(SystemResultStatus new_status, const char* details = nullptr) { |
| 359 | status = new_status; | 360 | status = new_status; |
| 360 | if (details) { | 361 | if (details) { |
| 361 | status_details = details; | 362 | status_details = details; |
| @@ -411,7 +412,7 @@ struct System::Impl { | |||
| 411 | /// Network instance | 412 | /// Network instance |
| 412 | Network::NetworkInstance network_instance; | 413 | Network::NetworkInstance network_instance; |
| 413 | 414 | ||
| 414 | ResultStatus status = ResultStatus::Success; | 415 | SystemResultStatus status = SystemResultStatus::Success; |
| 415 | std::string status_details = ""; | 416 | std::string status_details = ""; |
| 416 | 417 | ||
| 417 | std::unique_ptr<Core::PerfStats> perf_stats; | 418 | std::unique_ptr<Core::PerfStats> perf_stats; |
| @@ -439,16 +440,16 @@ const CpuManager& System::GetCpuManager() const { | |||
| 439 | return impl->cpu_manager; | 440 | return impl->cpu_manager; |
| 440 | } | 441 | } |
| 441 | 442 | ||
| 442 | System::ResultStatus System::Run() { | 443 | SystemResultStatus System::Run() { |
| 443 | return impl->Run(); | 444 | return impl->Run(); |
| 444 | } | 445 | } |
| 445 | 446 | ||
| 446 | System::ResultStatus System::Pause() { | 447 | SystemResultStatus System::Pause() { |
| 447 | return impl->Pause(); | 448 | return impl->Pause(); |
| 448 | } | 449 | } |
| 449 | 450 | ||
| 450 | System::ResultStatus System::SingleStep() { | 451 | SystemResultStatus System::SingleStep() { |
| 451 | return ResultStatus::Success; | 452 | return SystemResultStatus::Success; |
| 452 | } | 453 | } |
| 453 | 454 | ||
| 454 | void System::InvalidateCpuInstructionCaches() { | 455 | void System::InvalidateCpuInstructionCaches() { |
| @@ -463,8 +464,8 @@ void System::Shutdown() { | |||
| 463 | impl->Shutdown(); | 464 | impl->Shutdown(); |
| 464 | } | 465 | } |
| 465 | 466 | ||
| 466 | System::ResultStatus System::Load(Frontend::EmuWindow& emu_window, const std::string& filepath, | 467 | SystemResultStatus System::Load(Frontend::EmuWindow& emu_window, const std::string& filepath, |
| 467 | u64 program_id, std::size_t program_index) { | 468 | u64 program_id, std::size_t program_index) { |
| 468 | return impl->Load(*this, emu_window, filepath, program_id, program_index); | 469 | return impl->Load(*this, emu_window, filepath, program_id, program_index); |
| 469 | } | 470 | } |
| 470 | 471 | ||
| @@ -624,7 +625,7 @@ Loader::ResultStatus System::GetGameName(std::string& out) const { | |||
| 624 | return impl->GetGameName(out); | 625 | return impl->GetGameName(out); |
| 625 | } | 626 | } |
| 626 | 627 | ||
| 627 | void System::SetStatus(ResultStatus new_status, const char* details) { | 628 | void System::SetStatus(SystemResultStatus new_status, const char* details) { |
| 628 | impl->SetStatus(new_status, details); | 629 | impl->SetStatus(new_status, details); |
| 629 | } | 630 | } |
| 630 | 631 | ||
diff --git a/src/core/core.h b/src/core/core.h index cae578c69..c1234ef77 100644 --- a/src/core/core.h +++ b/src/core/core.h | |||
| @@ -104,6 +104,18 @@ struct PerfStatsResults; | |||
| 104 | FileSys::VirtualFile GetGameFileFromPath(const FileSys::VirtualFilesystem& vfs, | 104 | FileSys::VirtualFile GetGameFileFromPath(const FileSys::VirtualFilesystem& vfs, |
| 105 | const std::string& path); | 105 | const std::string& path); |
| 106 | 106 | ||
| 107 | /// Enumeration representing the return values of the System Initialize and Load process. | ||
| 108 | enum class SystemResultStatus : u32 { | ||
| 109 | Success, ///< Succeeded | ||
| 110 | ErrorNotInitialized, ///< Error trying to use core prior to initialization | ||
| 111 | ErrorGetLoader, ///< Error finding the correct application loader | ||
| 112 | ErrorSystemFiles, ///< Error in finding system files | ||
| 113 | ErrorSharedFont, ///< Error in finding shared font | ||
| 114 | ErrorVideoCore, ///< Error in the video core | ||
| 115 | ErrorUnknown, ///< Any other error | ||
| 116 | ErrorLoader, ///< The base for loader errors (too many to repeat) | ||
| 117 | }; | ||
| 118 | |||
| 107 | class System { | 119 | class System { |
| 108 | public: | 120 | public: |
| 109 | using CurrentBuildProcessID = std::array<u8, 0x20>; | 121 | using CurrentBuildProcessID = std::array<u8, 0x20>; |
| @@ -118,35 +130,23 @@ public: | |||
| 118 | System(System&&) = delete; | 130 | System(System&&) = delete; |
| 119 | System& operator=(System&&) = delete; | 131 | System& operator=(System&&) = delete; |
| 120 | 132 | ||
| 121 | /// Enumeration representing the return values of the System Initialize and Load process. | ||
| 122 | enum class ResultStatus : u32 { | ||
| 123 | Success, ///< Succeeded | ||
| 124 | ErrorNotInitialized, ///< Error trying to use core prior to initialization | ||
| 125 | ErrorGetLoader, ///< Error finding the correct application loader | ||
| 126 | ErrorSystemFiles, ///< Error in finding system files | ||
| 127 | ErrorSharedFont, ///< Error in finding shared font | ||
| 128 | ErrorVideoCore, ///< Error in the video core | ||
| 129 | ErrorUnknown, ///< Any other error | ||
| 130 | ErrorLoader, ///< The base for loader errors (too many to repeat) | ||
| 131 | }; | ||
| 132 | |||
| 133 | /** | 133 | /** |
| 134 | * Run the OS and Application | 134 | * Run the OS and Application |
| 135 | * This function will start emulation and run the relevant devices | 135 | * This function will start emulation and run the relevant devices |
| 136 | */ | 136 | */ |
| 137 | [[nodiscard]] ResultStatus Run(); | 137 | [[nodiscard]] SystemResultStatus Run(); |
| 138 | 138 | ||
| 139 | /** | 139 | /** |
| 140 | * Pause the OS and Application | 140 | * Pause the OS and Application |
| 141 | * This function will pause emulation and stop the relevant devices | 141 | * This function will pause emulation and stop the relevant devices |
| 142 | */ | 142 | */ |
| 143 | [[nodiscard]] ResultStatus Pause(); | 143 | [[nodiscard]] SystemResultStatus Pause(); |
| 144 | 144 | ||
| 145 | /** | 145 | /** |
| 146 | * Step the CPU one instruction | 146 | * Step the CPU one instruction |
| 147 | * @return Result status, indicating whether or not the operation succeeded. | 147 | * @return Result status, indicating whether or not the operation succeeded. |
| 148 | */ | 148 | */ |
| 149 | [[nodiscard]] ResultStatus SingleStep(); | 149 | [[nodiscard]] SystemResultStatus SingleStep(); |
| 150 | 150 | ||
| 151 | /** | 151 | /** |
| 152 | * Invalidate the CPU instruction caches | 152 | * Invalidate the CPU instruction caches |
| @@ -166,10 +166,11 @@ public: | |||
| 166 | * input. | 166 | * input. |
| 167 | * @param filepath String path to the executable application to load on the host file system. | 167 | * @param filepath String path to the executable application to load on the host file system. |
| 168 | * @param program_index Specifies the index within the container of the program to launch. | 168 | * @param program_index Specifies the index within the container of the program to launch. |
| 169 | * @returns ResultStatus code, indicating if the operation succeeded. | 169 | * @returns SystemResultStatus code, indicating if the operation succeeded. |
| 170 | */ | 170 | */ |
| 171 | [[nodiscard]] ResultStatus Load(Frontend::EmuWindow& emu_window, const std::string& filepath, | 171 | [[nodiscard]] SystemResultStatus Load(Frontend::EmuWindow& emu_window, |
| 172 | u64 program_id = 0, std::size_t program_index = 0); | 172 | const std::string& filepath, u64 program_id = 0, |
| 173 | std::size_t program_index = 0); | ||
| 173 | 174 | ||
| 174 | /** | 175 | /** |
| 175 | * Indicates if the emulated system is powered on (all subsystems initialized and able to run an | 176 | * Indicates if the emulated system is powered on (all subsystems initialized and able to run an |
| @@ -295,7 +296,7 @@ public: | |||
| 295 | /// Gets the name of the current game | 296 | /// Gets the name of the current game |
| 296 | [[nodiscard]] Loader::ResultStatus GetGameName(std::string& out) const; | 297 | [[nodiscard]] Loader::ResultStatus GetGameName(std::string& out) const; |
| 297 | 298 | ||
| 298 | void SetStatus(ResultStatus new_status, const char* details); | 299 | void SetStatus(SystemResultStatus new_status, const char* details); |
| 299 | 300 | ||
| 300 | [[nodiscard]] const std::string& GetStatusDetails() const; | 301 | [[nodiscard]] const std::string& GetStatusDetails() const; |
| 301 | 302 | ||