Difference between revisions of "Loader services"

From Nintendo Switch Brew
Jump to navigation Jump to search
(ldr:pm - GetProgramInfo)
Line 14: Line 14:
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Cmd || Name || Arguments
+
! Cmd || Name
 
|-
 
|-
| 0 || ||
+
| 0 || CreateProcess
 
|-
 
|-
| 1 || GetProgramInfo || Takes in a storageID + titleID, writes output to a C descriptor buffer.
+
| 1 || [[#GetProgramInfo]]
 
|-
 
|-
| 2 || ||
+
| 2 || [[#RegisterTitle]]
 
|-
 
|-
| 3 || ||
+
| 3 || [[#UnregisterTitle]]
 
|}
 
|}
 +
 +
== GetProgramInfo ==
 +
Takes a TitleId + StorageId, writes output to a C descriptor buffer.
 +
 +
== RegisterTitle ==
 +
Takes a TitleId + StorageId, returns an index.
 +
 +
== UnregisterTitle ==
 +
Takes the index from [[#RegisterTitle]].
 +
 +
= ldr:shel =
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || [[#AddProcessToLaunchQueue]]
 +
|-
 +
| 1 || [[#ClearLaunchQueue]]
 +
|}
 +
 +
== AddProcessToLaunchQueue ==
 +
Takes a type-0x19 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:ro =
 
= ldr:ro =
Line 115: Line 143:
 
| 2 || Always 0.
 
| 2 || Always 0.
 
|}
 
|}
 
= ldr:shel =
 
{| class="wikitable" border="1"
 
|-
 
! Cmd || Name
 
|-
 
| 0 || [[#LoadProcess]]
 
|-
 
| 1 || [[#ClearProcessList]]
 
|}
 
 
== LoadProcess ==
 
Takes a type-0x19 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.
 
 
== ClearProcessList ==
 
Clears the loaded processes waiting queue.
 
  
 
[[Category:Services]]
 
[[Category:Services]]

Revision as of 15:56, 16 July 2017

ldr:dmnt

Cmd Name
0
1
2

ldr:pm

Cmd Name
0 CreateProcess
1 #GetProgramInfo
2 #RegisterTitle
3 #UnregisterTitle

GetProgramInfo

Takes a TitleId + StorageId, writes output to a C descriptor buffer.

RegisterTitle

Takes a TitleId + StorageId, returns an index.

UnregisterTitle

Takes the index from #RegisterTitle.

ldr:shel

Cmd Name
0 #AddProcessToLaunchQueue
1 #ClearLaunchQueue

AddProcessToLaunchQueue

Takes a type-0x19 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:ro

Cmd Name
0 #LoadNro
1 UnloadNro
2 #LoadNrr
3 UnloadNrr
4 #Initialize

LoadNro

Word Value
0 0x00000004
1 0x80000012
2 0x00000001
0-1 Pid
0 "SCFI"
1 0x00000000
2 Always 0.
3 Nro heap address
4 Nro size
5 Bss backing heap address
6 Bss size

LoadNrr

Word Value
0 0x00000004
1 0x8000000E
2 0x00000001
0-1 Pid
0 "SFCI"
1 0x00000002
2 Always 0.
3 Nrr address
4 Nrr size

Initialize

Word Value
0 0x00000004
1 0x8000000A
2 0x00000003
0-1 Pid
2 Process handle (0xFFFF8001)
0 "SFCI"
1 0x00000004
2 Always 0.