diff --git a/libctru/include/3ds/services/ns.h b/libctru/include/3ds/services/ns.h index 5e787a3..1a40bf0 100644 --- a/libctru/include/3ds/services/ns.h +++ b/libctru/include/3ds/services/ns.h @@ -45,4 +45,7 @@ Result NS_RebootToTitle(u8 mediatype, u64 titleid); * @param titleid ID of the title to terminate. * @param timeout Timeout in nanoseconds. Pass 0 if not required. */ -Result NS_TerminateProcessTID(u64 titleid, u64 timeout); \ No newline at end of file +Result NS_TerminateProcessTID(u64 titleid, u64 timeout); + +/// Reboots the system +Result NS_RebootSystem(void); \ No newline at end of file diff --git a/libctru/source/services/ns.c b/libctru/source/services/ns.c index 29e607e..2a0c252 100644 --- a/libctru/source/services/ns.c +++ b/libctru/source/services/ns.c @@ -116,3 +116,15 @@ Result NS_TerminateProcessTID(u64 titleid, u64 timeout) return (Result)cmdbuf[1]; } + +Result NS_RebootSystem(void) +{ + Result ret = 0; + u32 *cmdbuf = getThreadCommandBuffer(); + + cmdbuf[0] = IPC_MakeHeader(0x16,0,0); // 0x160000 + + if(R_FAILED(ret = svcSendSyncRequest(nsHandle)))return ret; + + return (Result)cmdbuf[1]; +} \ No newline at end of file