diff --git a/libctru/include/3ds/services/ns.h b/libctru/include/3ds/services/ns.h index 5649c2c..6616168 100644 --- a/libctru/include/3ds/services/ns.h +++ b/libctru/include/3ds/services/ns.h @@ -24,3 +24,9 @@ Result NS_LaunchTitle(u64 titleid, u32 launch_flags, u32 *procid); * @param titleid ID of the title to launch. */ Result NS_RebootToTitle(u8 mediatype, u64 titleid); + +/** + * @brief Terminates the process with the specified titleid. + * @param titleid ID of the title to terminate. + */ +Result NS_TerminateProcessTID(u64 titleid); diff --git a/libctru/source/services/ns.c b/libctru/source/services/ns.c index ffdcbfe..97f1547 100644 --- a/libctru/source/services/ns.c +++ b/libctru/source/services/ns.c @@ -59,3 +59,19 @@ Result NS_RebootToTitle(u8 mediatype, u64 titleid) return (Result)cmdbuf[1]; } + +Result NS_TerminateProcessTID(u64 titleid) +{ + Result ret = 0; + u32 *cmdbuf = getThreadCommandBuffer(); + + cmdbuf[0] = IPC_MakeHeader(0x11,4,0); // 0x110100 + cmdbuf[1] = titleid & 0xffffffff; + cmdbuf[2] = (titleid >> 32) & 0xffffffff; + cmdbuf[3] = 0x0; + cmdbuf[4] = 0x0; + + if(R_FAILED(ret = svcSendSyncRequest(nsHandle)))return ret; + + return (Result)cmdbuf[1]; +}