#include <3ds/srv.h>
#include <3ds/services/irrst.h>
+// used to determine whether or not we should do IRRST_Initialize
+Handle __get_handle_from_list(char* name);
+
Handle irrstHandle;
Handle irrstMemHandle;
Handle irrstEvent;
// Get sharedmem handle.
if((ret=IRRST_GetHandles(&irrstMemHandle, &irrstEvent))) goto cleanup1;
+ // Initialize ir:rst
+ if(__get_handle_from_list("ir:rst")==0)ret=IRRST_Initialize(10, 0);
+
// Map ir:rst shared memory at addr "sharedMem".
irrstSharedMem=sharedMem;
if((ret=svcMapMemoryBlock(irrstMemHandle, (u32)irrstSharedMem, MEMPERM_READ, 0x10000000)))goto cleanup2;
svcCloseHandle(irrstEvent);
// Unmap ir:rst sharedmem and close handles.
svcUnmapMemoryBlock(irrstMemHandle, (u32)irrstSharedMem);
+ if(__get_handle_from_list("ir:rst")==0) IRRST_Shutdown();
svcCloseHandle(irrstMemHandle);
svcCloseHandle(irrstHandle);
}