Loader services: Difference between revisions

No edit summary
Line 1: Line 1:
= ldr:shel =
This is "nn::ldr::detail::IShellInterface".
{| class="wikitable" border="1"
|-
! Cmd || Name
|-
| 0 || [[#SetProgramArgument]]
|-
| 1 || [[#FlushArguments]]
|}
== AddProcessToLaunchQueue ==
Takes a type-0x9 input buffer with launch arguments (as string), an u32 (size of arguments string), and an input title-id.
Loads a process for the specified title-id and passes along the supplied arguments.
Loaded processes are kept in a queue waiting for PM to launch them. The maximum number of waiting processes in this list is 10.
== ClearLaunchQueue ==
Clears the loaded processes waiting queue.
= ldr:dmnt =
= ldr:dmnt =
This is "nn::ldr::detail::IDebugMonitorInterface".
This is "nn::ldr::detail::IDebugMonitorInterface".
Line 6: Line 28:
! Cmd || Name
! Cmd || Name
|-
|-
| 0 || [[Loader_services#AddProcessToDebugLaunchQueue|AddProcessToDebugLaunchQueue]]
| 0 || [[#SetProgramArgument]]
|-
|-
| 1 || [[Loader_services#ClearDebugLaunchQueue|ClearDebugLaunchQueue]]
| 1 || [[#FlushArguments]]
|-
|-
| 2 || [[Loader_services#GetNsoInfos|GetNsoInfos]]
| 2 || [[#GetProcessModuleInfo]]
|}
|}


== AddProcessToDebugLaunchQueue ==
== GetProcessModuleInfo==
Same as [[Loader_services#AddProcessToLaunchQueue|AddProcessToLaunchQueue]] but for processes marked as debug.
Takes in a u64 Process ID, and a C descriptor out array of [[#ModuleInfos]]. Returns the number of ModuleInfos copied to output.
 
== ClearDebugLaunchQueue ==
Same as [[Loader_services#ClearLaunchQueue|ClearLaunchQueue]].


== GetNsoInfos ==
ModuleInfo is the same here as for ro:dmnt.
Takes in a u64 ProcessID, and a C descriptor. Returns the number of NsoInfos copied to output.


NsoInfo has the following layout:
ModuleInfo has the following layout:


=== ModuleInfo ===
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 32: Line 51:
| 0x0
| 0x0
| 0x20
| 0x20
| "Build ID", from NSO header+0x40.
| Build ID
|-
|-
| 0x20
| 0x20
| 0x8
| 0x8
| Mapped address for this NSO
| Mapped Address
|-
|-
| 0x28
| 0x28
| 0x8
| 0x8
| Mapped size for this NSO
| Mapped Size
|-
|-
|}
|}
Line 56: Line 75:
| 1 || [[#GetProgramInfo]]
| 1 || [[#GetProgramInfo]]
|-
|-
| 2 || [[#RegisterTitle]]
| 2 || [[#PinProgram]]
|-
|-
| 3 || [[#UnregisterTitle]]
| 3 || [[#UnpinProgram]]
|}
|}


== GetProgramInfo ==
== GetProgramInfo ==
Takes a TitleId + StorageId, parses the NPDM, and writes output to a C descriptor buffer as follows:
Takes an ncm::ProgramLocation, parses the NPDM, and writes a [[#ProgramInfo]] to a C descriptor buffer as follows:


=== ProgramInfo ===
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 127: Line 147:
|}
|}


== RegisterTitle ==
== PinProgram ==
Takes a TitleId + StorageId, returns an index.
Takes an ncm::ProgramLocation, returns a u64 "PinId".
 
== UnregisterTitle ==
Takes the index from [[#RegisterTitle]].
 
= ldr:shel =
This is "nn::ldr::detail::IShellInterface".
 
{| class="wikitable" border="1"
|-
! Cmd || Name
|-
| 0 || [[#AddProcessToLaunchQueue]]
|-
| 1 || [[#ClearLaunchQueue]]
|}
 
== AddProcessToLaunchQueue ==
Takes a type-0x9 input buffer with launch arguments (as string), an u32 (size of arguments string), and an input title-id.
 
Loads a process for the specified title-id and passes along the supplied arguments.
Loaded processes are kept in a queue waiting for PM to launch them. The maximum number of waiting processes in this list is 10.


== ClearLaunchQueue ==
== UnpinProgram ==
Clears the loaded processes waiting queue.
Takes a PinId from [[#PinProgram]].


[[Category:Services]]
[[Category:Services]]