Loader services: Difference between revisions

From Nintendo Switch Brew
Jump to navigation Jump to search
ldr:pm - GetProgramInfo
No edit summary
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 17: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.