PGL services: Difference between revisions
No edit summary |
|||
(12 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
PGL (Program | PGL (Program Launcher) is a sysmodule designed for encapsulating all program launching / management logic. | ||
The core logic of this sysmodule was previously encapsulated by the ns:dev interface (and the nn.nssrv.ProcessLaunchControlTask thread in particular). | |||
= pgl = | = pgl = | ||
Line 26: | Line 28: | ||
| 10 || [[#EnableApplicationAllThreadDumpOnCrash]] | | 10 || [[#EnableApplicationAllThreadDumpOnCrash]] | ||
|- | |- | ||
| 12 || [[#TriggerSnapShotDumper]] | | 11 || [19.0.0+] GetProcessId | ||
|- | |||
| 12 || [10.0.0-11.0.1] [[#TriggerSnapShotDumper]] | |||
|- | |- | ||
| 20 || [[#GetShellEventObserver]] | | 20 || [[#GetShellEventObserver]] | ||
|- | |- | ||
| 21 || [11.0.0-11.0.1] | |||
|} | |} | ||
== LaunchProgram == | == LaunchProgram == | ||
Line 104: | Line 51: | ||
This just calls pm:shell->TerminateProcess with the input process id. | This just calls pm:shell->TerminateProcess with the input process id. | ||
== | == GetShellEventObserver == | ||
No input. Returns an [[#IEventObserver]]. | No input. Returns an [[#IEventObserver]]. | ||
== LaunchProgramFromHost == | == LaunchProgramFromHost == | ||
This takes an input u32 [[Process_Manager_services#LaunchFlags]] pm launch_flags and a MapAlias input buffer "content path". | This takes an input u32 [[Process_Manager_services#LaunchFlags]] pm launch_flags and a MapAlias input buffer "content path". | ||
Line 122: | Line 68: | ||
== GetHostContentMetaInfo == | == GetHostContentMetaInfo == | ||
This takes an input MapAlias buffer "content path", and does the same parsing as [[#LaunchProgramFromHost]]. | This takes an input MapAlias buffer "content path", and does the same parsing as [[#LaunchProgramFromHost]]. | ||
Line 128: | Line 73: | ||
== GetApplicationProcessId == | == GetApplicationProcessId == | ||
This calls pm:shell->GetApplicationProcessIdForShell, and returns the output process id. | This calls pm:shell->GetApplicationProcessIdForShell, and returns the output process id. | ||
Line 134: | Line 78: | ||
== BoostSystemMemoryResourceLimit == | == BoostSystemMemoryResourceLimit == | ||
This takes in a u64 mem_size, and uses it as input to pm:shell->BoostSystemMemoryResourceLimit | This takes in a u64 mem_size, and uses it as input to pm:shell->BoostSystemMemoryResourceLimit | ||
== EnableApplicationCrashReport == | == EnableApplicationCrashReport == | ||
Takes an input boolean "enable". | Takes an input boolean "enable". | ||
Line 150: | Line 92: | ||
== IsApplicationCrashReportEnabled == | == IsApplicationCrashReportEnabled == | ||
This returns the value of the bit set or cleared by [[#EnableApplicationCrashReport]] | This returns the value of the bit set or cleared by [[#EnableApplicationCrashReport]] | ||
== EnableApplicationAllThreadDumpOnCrash == | == EnableApplicationAllThreadDumpOnCrash == | ||
Takes an input boolean "enable". | Takes an input boolean "enable". | ||
Line 168: | Line 108: | ||
== TriggerSnapShotDumper == | == TriggerSnapShotDumper == | ||
This takes an input 32 "SnapShotDumpType" and an input MapAliasBuffer "argument". | This takes an input 32 "SnapShotDumpType" and an input MapAliasBuffer "argument". | ||
Line 188: | Line 127: | ||
|} | |} | ||
== GetProcessEventHandle == | |||
This takes no input and returns an output copy event handle. | This takes no input and returns an output copy event handle. | ||
== GetProcessEventInfo == | |||
This takes no input and attempts to receive a [[Process_Manager_services#ProcessEventInfo]] from the observer's message queue. | |||
This takes no input and attempts to receive a [[#ProcessEventInfo]] from the observer's message queue. | |||
Every time a process event occurs, pgl receives the event from PM (it does pm:shell->GetProcessEventHandle() during startup and has a thread looping pm:shell->GetProcessEventInfo() to track process events. | Every time a process event occurs, pgl receives the event from PM (it does pm:shell->GetProcessEventHandle() during startup and has a thread looping pm:shell->GetProcessEventInfo() to track process events. | ||
PGL sends to all observers' message queues a [[#ProcessEventInfo]] for each event it receives, thus allowing for multiple subscribers to process events. | PGL sends to all observers' message queues a [[Process_Manager_services#ProcessEventInfo]] for each event it receives, thus allowing for multiple subscribers to process events. | ||
= LaunchFlags = | |||
{| class=wikitable | |||
! Bit || Mask || Name | |||
|- | |||
| 0 || 1 || EnableDetailedCrashReport | |||
|- | |||
| 1 || 2 || EnableCrashReportScreenShotForProduction | |||
|- | |||
| 2 || 4 || EnableCrashReportScreenShotForDevelop | |||
|- | |||
|} | |||
== | = SnapShotDumpType = | ||
{| class=wikitable | |||
! Value || Name | |||
|- | |||
| 0 || None | |||
|- | |||
| 1 || Auto | |||
|- | |||
| 2 || Full | |||
|- | |||
|} | |||
= ContentMetaInfo = | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 210: | Line 170: | ||
| 0x0 | | 0x0 | ||
| 0x8 | | 0x8 | ||
| | | [[NCM_services#ProgramId|ProgramId]] | ||
|- | |- | ||
| 0x8 | | 0x8 | ||
| 0x4 | | 0x4 | ||
| | | Version | ||
|- | |- | ||
| 0xC | | 0xC | ||
| | | 0x1 | ||
| | | ContentType | ||
|- | |||
| 0xD | |||
| 0x1 | |||
| ID Offset | |||
|- | |- | ||
| 0xE | |||
| 0x2 | |||
| Padding | |||
|} | |} | ||
[[Category:Services]] |