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 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 __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 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"); }