PGL services: Difference between revisions
Created page with "PGL (Program Loader) is a sysmodule designed for encapsulating all program loading logic. = pgl = {| class="wikitable" border="1" |- ! Cmd || Name |- | 0 || LaunchProgram |-..." |
|||
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 == |