void __KernelShutdown() { if (!kernelRunning) { ERROR_LOG(HLE, "Can't shut down kernel - not running"); return; } kernelObjects.List(); INFO_LOG(HLE, "Shutting down kernel - %i kernel objects alive", kernelObjects.GetCount()); kernelObjects.Clear(); __MpegShutdown(); __PsmfShutdown(); __PPGeShutdown(); __CtrlShutdown(); __UtilityShutdown(); __GeShutdown(); __SasShutdown(); __DisplayShutdown(); __AudioShutdown(); __IoShutdown(); __KernelMutexShutdown(); __KernelThreadingShutdown(); __KernelMemoryShutdown(); __InterruptsShutdown(); CoreTiming::ClearPendingEvents(); CoreTiming::UnregisterAllEvents(); kernelRunning = false; }
void __KernelShutdown() { if (!kernelRunning) { ERROR_LOG(SCEKERNEL, "Can't shut down kernel - not running"); return; } kernelObjects.List(); INFO_LOG(SCEKERNEL, "Shutting down kernel - %i kernel objects alive", kernelObjects.GetCount()); hleCurrentThreadName = NULL; kernelObjects.Clear(); __AudioCodecShutdown(); __VideoPmpShutdown(); __AACShutdown(); __NetAdhocShutdown(); __NetShutdown(); __FontShutdown(); __Mp3Shutdown(); __MpegShutdown(); __PsmfShutdown(); __PPGeShutdown(); __CtrlShutdown(); __UtilityShutdown(); __GeShutdown(); __SasShutdown(); __DisplayShutdown(); __AtracShutdown(); __AudioShutdown(); __IoShutdown(); __KernelMutexShutdown(); __KernelThreadingShutdown(); __KernelMemoryShutdown(); __InterruptsShutdown(); __CheatShutdown(); __KernelModuleShutdown(); CoreTiming::ClearPendingEvents(); CoreTiming::UnregisterAllEvents(); Reporting::Shutdown(); SaveState::Shutdown(); kernelRunning = false; }
void __KernelDoState(PointerWrap &p) { std::string git_version = PPSSPP_GIT_VERSION; p.Do(git_version); if (git_version != PPSSPP_GIT_VERSION) { p.SetError(p.ERROR_WARNING); WARN_LOG(HLE, "Warning: this savestate was generated by a different version of PPSSPP. It may not load properly."); } p.Do(kernelRunning); kernelObjects.DoState(p); p.DoMarker("KernelObjects"); __InterruptsDoState(p); // Memory needs to be after kernel objects, which may free kernel memory. __KernelMemoryDoState(p); __KernelThreadingDoState(p); __KernelAlarmDoState(p); __KernelVTimerDoState(p); __KernelEventFlagDoState(p); __KernelMbxDoState(p); __KernelModuleDoState(p); __KernelMutexDoState(p); __KernelSemaDoState(p); __KernelTimeDoState(p); __AtracDoState(p); __AudioDoState(p); __CtrlDoState(p); __DisplayDoState(p); __FontDoState(p); __GeDoState(p); __ImposeDoState(p); __IoDoState(p); __MpegDoState(p); __NetDoState(p); __PowerDoState(p); __PsmfDoState(p); __PsmfPlayerDoState(p); __RtcDoState(p); __SasDoState(p); __SslDoState(p); __UmdDoState(p); __UtilityDoState(p); __UsbDoState(p); __VaudioDoState(p); __PPGeDoState(p); __InterruptsDoStateLate(p); __KernelThreadingDoStateLate(p); }
void KernelObjectPool::DoState(PointerWrap &p) { auto s = p.Section("KernelObjectPool", 1); if (!s) return; int _maxCount = maxCount; p.Do(_maxCount); if (_maxCount != maxCount) { p.SetError(p.ERROR_FAILURE); ERROR_LOG(SCEKERNEL, "Unable to load state: different kernel object storage."); return; } if (p.mode == p.MODE_READ) { hleCurrentThreadName = NULL; kernelObjects.Clear(); } p.Do(nextID); p.DoArray(occupied, maxCount); for (int i = 0; i < maxCount; ++i) { if (!occupied[i]) continue; int type; if (p.mode == p.MODE_READ) { p.Do(type); pool[i] = CreateByIDType(type); // Already logged an error. if (pool[i] == NULL) return; pool[i]->uid = i + handleOffset; } else { type = pool[i]->GetIDType(); p.Do(type); } pool[i]->DoState(p); if (p.error >= p.ERROR_FAILURE) break; } }
void __KernelDoState(PointerWrap &p) { p.Do(kernelRunning); kernelObjects.DoState(p); p.DoMarker("KernelObjects"); __InterruptsDoState(p); // Memory needs to be after kernel objects, which may free kernel memory. __KernelMemoryDoState(p); __KernelThreadingDoState(p); __KernelAlarmDoState(p); __KernelVTimerDoState(p); __KernelEventFlagDoState(p); __KernelMbxDoState(p); __KernelModuleDoState(p); __KernelMsgPipeDoState(p); __KernelMutexDoState(p); __KernelSemaDoState(p); __KernelTimeDoState(p); __AtracDoState(p); __AudioDoState(p); __CccDoState(p); __CtrlDoState(p); __DisplayDoState(p); __FontDoState(p); __GeDoState(p); __ImposeDoState(p); __IoDoState(p); __JpegDoState(p); __MpegDoState(p); __NetDoState(p); __PowerDoState(p); __PsmfDoState(p); __PsmfPlayerDoState(p); __RtcDoState(p); __SasDoState(p); __SslDoState(p); __UmdDoState(p); __UtilityDoState(p); __UsbDoState(p); __VaudioDoState(p); __PPGeDoState(p); __InterruptsDoStateLate(p); __KernelThreadingDoStateLate(p); }
void KernelObjectPool::DoState(PointerWrap &p) { int _maxCount = maxCount; p.Do(_maxCount); if (_maxCount != maxCount) ERROR_LOG(HLE, "Unable to load state: different kernel object storage."); if (p.mode == p.MODE_READ) { hleCurrentThreadName = NULL; kernelObjects.Clear(); } p.Do(nextID); p.DoArray(occupied, maxCount); for (int i = 0; i < maxCount; ++i) { if (!occupied[i]) continue; int type; if (p.mode == p.MODE_READ) { p.Do(type); pool[i] = CreateByIDType(type); pool[i]->uid = i + handleOffset; // Already logged an error. if (pool[i] == NULL) return; } else { type = pool[i]->GetIDType(); p.Do(type); } pool[i]->DoState(p); } p.DoMarker("KernelObjectPool"); }
void __KernelDoState(PointerWrap &p) { p.Do(kernelRunning); kernelObjects.DoState(p); p.DoMarker("KernelObjects"); __InterruptsDoState(p); __KernelMemoryDoState(p); __KernelThreadingDoState(p); __KernelAlarmDoState(p); __KernelEventFlagDoState(p); __KernelMbxDoState(p); __KernelModuleDoState(p); __KernelMutexDoState(p); __KernelSemaDoState(p); __KernelTimeDoState(p); __AudioDoState(p); __CtrlDoState(p); __DisplayDoState(p); __FontDoState(p); __GeDoState(p); __ImposeDoState(p); __IoDoState(p); __MpegDoState(p); __PowerDoState(p); __PsmfDoState(p); __PsmfPlayerDoState(p); __SasDoState(p); __SslDoState(p); __UmdDoState(p); __UtilityDoState(p); __UsbDoState(p); __PPGeDoState(p); __InterruptsDoStateLate(p); __KernelThreadingDoStateLate(p); }
void __KernelDoState(PointerWrap &p) { { auto s = p.Section("Kernel", 1, 2); if (!s) return; p.Do(kernelRunning); kernelObjects.DoState(p); if (s >= 2) p.Do(registeredExitCbId); } { auto s = p.Section("Kernel Modules", 1); if (!s) return; __InterruptsDoState(p); // Memory needs to be after kernel objects, which may free kernel memory. __KernelMemoryDoState(p); __KernelThreadingDoState(p); __KernelAlarmDoState(p); __KernelVTimerDoState(p); __KernelEventFlagDoState(p); __KernelMbxDoState(p); __KernelModuleDoState(p); __KernelMsgPipeDoState(p); __KernelMutexDoState(p); __KernelSemaDoState(p); __KernelTimeDoState(p); } { auto s = p.Section("HLE Modules", 1); if (!s) return; __AtracDoState(p); __AudioDoState(p); __CccDoState(p); __CtrlDoState(p); __DisplayDoState(p); __FontDoState(p); __GeDoState(p); __ImposeDoState(p); __IoDoState(p); __JpegDoState(p); __Mp3DoState(p); __MpegDoState(p); __NetDoState(p); __NetAdhocDoState(p); __PowerDoState(p); __PsmfDoState(p); __PsmfPlayerDoState(p); __RtcDoState(p); __SasDoState(p); __SslDoState(p); __UmdDoState(p); __UtilityDoState(p); __UsbDoState(p); __VaudioDoState(p); __HeapDoState(p); __PPGeDoState(p); __CheatDoState(p); } { auto s = p.Section("Kernel Cleanup", 1); if (!s) return; __InterruptsDoStateLate(p); __KernelThreadingDoStateLate(p); Reporting::DoState(p); } }