Line 35: |
Line 35: |
| |- | | |- |
| | 5 || 0x20 || [2.0.0+] LaunchFlags_SignalOnStart | | | 5 || 0x20 || [2.0.0+] LaunchFlags_SignalOnStart |
| + | |} |
| + | |
| + | = ProcessEventInfo = |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 |
| + | | 0x4 |
| + | | ProcessEvent |
| + | |- |
| + | | 0x4 |
| + | | 0x4 |
| + | | Padding/Reserved |
| + | |- |
| + | | 0x8 |
| + | | 0x8 |
| + | | ProcessId |
| + | |- |
| |} | | |} |
| | | |
Line 114: |
Line 135: |
| | 0 ([1.0.0-4.1.0] 1) || [[#GetJitDebugProcessIdList]] | | | 0 ([1.0.0-4.1.0] 1) || [[#GetJitDebugProcessIdList]] |
| |- | | |- |
− | | 1 ([1.0.0-4.1.0] 2) || [[#StartProcess]] | + | | 1 ([1.0.0-4.1.0] 2) || [[#StartProcess]] |
| |- | | |- |
− | | 2 ([1.0.0-4.1.0] 3) || [[#GetProcessId]] | + | | 2 ([1.0.0-4.1.0] 3) || [[#GetProcessId]] |
| |- | | |- |
− | | 3 ([1.0.0-4.1.0] 4) || [[#HookToCreateProcess]] | + | | 3 ([1.0.0-4.1.0] 4) || [[#HookToCreateProcess]] |
| |- | | |- |
− | | 4 ([1.0.0-4.1.0] 5) || [[#GetApplicationProcessId]] | + | | 4 ([1.0.0-4.1.0] 5) || [[#GetApplicationProcessId]] |
| |- | | |- |
− | | 5 ([1.0.0-4.1.0] 6) || [[#EnableDebugForApplication]] | + | | 5 ([1.0.0-4.1.0] 6) || [[#HookToCreateApplicationProcess]] |
| |- | | |- |
− | | [6.0.0+] 6 || [[#ClearHook]] | + | | [6.0.0+] 6 || [[#ClearHook]] |
| + | |- |
| + | | [14.0.0+] 7 || GetProgramId |
| |} | | |} |
| | | |
Line 175: |
Line 198: |
| ! Cmd || Name | | ! Cmd || Name |
| |- | | |- |
− | | 0 || [[#GetTitleId]] | + | | 0 || [[#GetProgramId]] |
| + | |- |
| + | | 1 || [14.0.0+] GetAppletCurrentResourceLimitValues |
| + | |- |
| + | | 2 || [14.0.0+] GetAppletPeakResourceLimitValues |
| |} | | |} |
| | | |
− | == GetTitleId == | + | == GetProgramId == |
| Takes a pid and returns the title-id associated with the process. | | Takes a pid and returns the title-id associated with the process. |
| | | |
Line 188: |
Line 215: |
| ! Cmd || Name | | ! Cmd || Name |
| |- | | |- |
− | | 0 || [[#LaunchProcess]] | + | | 0 || [[#LaunchProgram]] |
| |- | | |- |
− | | 1 || TerminateProcessByPid | + | | 1 || TerminateProcess |
| |- | | |- |
− | | 2 || TerminateProcessByTitleId | + | | 2 || TerminateProgram |
| |- | | |- |
− | | 3 || GetProcessEventWaiter | + | | 3 || GetProcessEventHandle |
| |- | | |- |
− | | 4 || [[#GetProcessEventType]] | + | | 4 || [[#GetProcessEventInfo]] |
| |- | | |- |
− | | ([1.0.0-4.1.0] 5) || [[#FinalizeDeadProcess]] | + | | ([1.0.0-4.1.0] 5) || [[#CleanupProcess]] |
| |- | | |- |
− | | ([1.0.0-4.1.0] 6) || [[#ClearProcessNotificationFlag]] | + | | ([1.0.0-4.1.0] 6) || [[#ClearJitDebugOccured]] |
| |- | | |- |
| | 5 ([1.0.0-4.1.0] 7) || [[#NotifyBootFinished]] | | | 5 ([1.0.0-4.1.0] 7) || [[#NotifyBootFinished]] |
| |- | | |- |
− | | 6 ([1.0.0-4.1.0] 8) || [[#GetApplicationPid]] | + | | 6 ([1.0.0-4.1.0] 8) || [[#GetApplicationProcessIdForShell]] |
| |- | | |- |
| | 7 ([4.0.0-4.1.0] 9) || [4.0.0+] [[#BoostSystemMemoryResourceLimit]] | | | 7 ([4.0.0-4.1.0] 9) || [4.0.0+] [[#BoostSystemMemoryResourceLimit]] |
| |- | | |- |
− | | 8 || [7.0.0+] [[#EnableAdditionalSystemThreads]] | + | | 8 || [7.0.0+] [[#BoostApplicationThreadResourceLimit]] |
| |- | | |- |
− | | 9 || [8.0.0+] [[#GetUnimplementedEventHandle]] | + | | 9 || [8.0.0+] [[#GetBootFinishedEventHandle]] |
| + | |- |
| + | | 10 || [14.0.0+] BoostSystemThreadResourceLimit |
| |} | | |} |
| | | |
− | == LaunchProcess == | + | == LaunchProgram == |
− | Takes launch_flags, title-id, and storageID. See [[#Process launch]]. | + | Takes an u32 launch_flags and [[NCM_services#ProgramLocation|ProgramLocation]]. Returns the u64 title PID. |
| | | |
− | Returns the u64 title PID.
| + | See [[#Process launch]]. |
| | | |
− | == GetProcessEventType == | + | == GetProcessEventInfo == |
| Returns 1 if flags has mask 2 set. | | Returns 1 if flags has mask 2 set. |
| | | |
Line 231: |
Line 260: |
| Returns 0 if process is not found. | | Returns 0 if process is not found. |
| | | |
− | == FinalizeDeadProcess == | + | == CleanupProcess == |
| Takes a pid as input. If the process with pid has the state "dead", it unregisters the pid in fsp:pr, sm:m, and ldr:pm. | | Takes a pid as input. If the process with pid has the state "dead", it unregisters the pid in fsp:pr, sm:m, and ldr:pm. |
| | | |
Line 238: |
Line 267: |
| [5.0.0+] This command was removed. | | [5.0.0+] This command was removed. |
| | | |
− | == ClearProcessNotificationFlag == | + | == ClearJitDebugOccured == |
| Takes a pid as input. Clears 0x10 from process flags. | | Takes a pid as input. Clears 0x10 from process flags. |
| | | |
Line 244: |
Line 273: |
| | | |
| == NotifyBootFinished == | | == NotifyBootFinished == |
− | This launches the [[boot2]] title. | + | This [[#LaunchProgram|launches]] the [[boot2]] title with launch_flags=0. |
| + | |
| + | [10.0.0+] The functionality described [[SMC#DisableProgramVerification|here]] was added, prior to title-launching. |
| | | |
− | [4.0.0+] When booting from SafeMode Firmware, instead of [[boot2]], this launches the following titles in order: | + | [4.0.0+] When booting from SafeMode Firmware, instead of [[boot2]], this launches the following titles in order (launch_flags=0): |
| * 0100000000000009 (settings) | | * 0100000000000009 (settings) |
| * 0100000000000006 (usb) | | * 0100000000000006 (usb) |
| * 010000000000001D (pcie) | | * 010000000000001D (pcie) |
| * 0100000000000007 (tma) | | * 0100000000000007 (tma) |
| + | * 0100000000000042 (pgl) [10.0.0+] |
| * 010000000000001F (ns) | | * 010000000000001F (ns) |
| * 0100000000000015 (lm) | | * 0100000000000015 (lm) |
Line 256: |
Line 288: |
| * 0100000000000016 (wlan) | | * 0100000000000016 (wlan) |
| * 0100000000000012 (bsdsockets) | | * 0100000000000012 (bsdsockets) |
| + | * 0100000000000046 (eth) [15.0.0+] |
| * 010000000000000F (nifm) | | * 010000000000000F (nifm) |
| * 0100000000000024 (ssl) | | * 0100000000000024 (ssl) |
Line 262: |
Line 295: |
| * 010000000000003D (safemode) | | * 010000000000003D (safemode) |
| | | |
− | == GetApplicationPid == | + | == GetApplicationProcessIdForShell == |
| Loops through the internal linked-list of processes, looks for mask 0x40 set in process flags. Returns pid of first such entry. | | Loops through the internal linked-list of processes, looks for mask 0x40 set in process flags. Returns pid of first such entry. |
| | | |
Line 270: |
Line 303: |
| This is used directly by [[NS_Services#IApplicationManagerInterface|ns:am2 BoostSystemMemoryResourceLimit]]. | | This is used directly by [[NS_Services#IApplicationManagerInterface|ns:am2 BoostSystemMemoryResourceLimit]]. |
| | | |
− | == EnableAdditionalSystemThreads== | + | == BoostApplicationThreadResourceLimit == |
− | Calls svcSetResourceLimitLimitValue to increase the limit on system threads by an amount calculated dynamically during setup. | + | Calls svcSetResourceLimitLimitValue to increase the limit on application threads by an amount calculated dynamically during setup. |
| | | |
| This function can only increase the limit once, on further calls it will call svcSetResourceLimitLimitValue with the same value it called the first time. | | This function can only increase the limit once, on further calls it will call svcSetResourceLimitLimitValue with the same value it called the first time. |
| | | |
− | On normal [[7.0.0]] retail firmware, this will double the limit on system threads from 0x60 to 0xC0. | + | On normal [[7.0.0]] retail firmware, this will double the limit on application threads from 0x60 to 0xC0. |
| | | |
− | == GetBootFinishedEvent == | + | == GetBootFinishedEventHandle == |
| This function returns a handle to an event that is signaled when [[#NotifyBootFinished]] is called. | | This function returns a handle to an event that is signaled when [[#NotifyBootFinished]] is called. |
| | | |