Line 6: |
Line 6: |
| ! Cmd || Name | | ! Cmd || Name |
| |- | | |- |
− | | 0 || LaunchProgram | + | | 0 || [[#LaunchProgram]] |
| |- | | |- |
− | | 1 || TerminateProcess | + | | 1 || [[#TerminateProcess]] |
| |- | | |- |
| | 2 || | | | 2 || |
Line 28: |
Line 28: |
| | 12 || | | | 12 || |
| |- | | |- |
− | | 20 || GetEventObserver | + | | 20 || [[#GetEventObserver]] |
| |} | | |} |
| + | |
| + | = LaunchFlags = |
| + | |
| + | The LaunchFlags enum looks like this: |
| + | |
| + | {| class=wikitable |
| + | ! Bit || Mask || Name |
| + | |- |
| + | | 0 || 1 || LaunchFlags_EnableDetailedCrashReport |
| + | |- |
| + | | 1 || 2 || LaunchFlags_EnableCrashReportScreenShotForProduction |
| + | |- |
| + | | 2 || 4 || LaunchFlags_EnableCrashReportScreenShotForDevelop |
| + | |- |
| + | |} |
| + | |
| + | |
| + | == LaunchProgram == |
| + | Takes a [[NCM_services#ProgramLocation|ProgramLocation]], a u32 [[Process_Manager_services#LaunchFlags]] pm launch_flags, and a u8 [[#LaunchFlags|LaunchFlags]] pgl launch_flags. |
| + | |
| + | This calls pm:shell->LaunchProgram with the program location and the input launch flags. If jit_debug!enable_jit_debug is true, LaunchFlags_SignalOnCrash is ORRd into the flags sent to PM. |
| + | |
| + | This then creates a new process tracking structure for the new process id and with the pgl launch flags. If an empty process struct is not allocated from the 0x20 slab heap, pgl aborts. |
| + | |
| + | == TerminateProcess == |
| + | This just calls pm:shell->TerminateProcess with the input process id. |
| | | |
| == GetEventObserver == | | == GetEventObserver == |