void __attribute__((weak)) __appExit(void) { // Cleanup default services. fsdevUnmountAll(); fsExit(); timeExit(); hidExit(); appletExit(); smExit(); }
Result smMitMInitialize(void) { atomicIncrement64(&g_refCnt); if (g_smMitmHandle != INVALID_HANDLE) return 0; Result rc = svcConnectToNamedPort(&g_smMitmHandle, "sm:"); if (R_SUCCEEDED(rc)) { IpcCommand c; ipcInitialize(&c); ipcSendPid(&c); struct { u64 magic; u64 cmd_id; u64 zero; u64 reserved[2]; } *raw; raw = ipcPrepareHeader(&c, sizeof(*raw)); raw->magic = SFCI_MAGIC; raw->cmd_id = 0; raw->zero = 0; rc = ipcDispatch(g_smMitmHandle); if (R_SUCCEEDED(rc)) { IpcParsedCommand r; ipcParse(&r); struct { u64 magic; u64 result; } *resp = r.Raw; rc = resp->result; } } if (R_FAILED(rc)) smExit(); return rc; }