Services API: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
Services are system processes running in the background which wait for incoming requests. When a process wants to communicate with a service, it first needs to get a handle to the named service, and then it can communicate with the service via inter-process communication (each service has a name up to 8 characters). | |||
Handles for services are retrieved from the service manager port, "sm:". Services are an abstraction of ports, they operate the same way except regular ports can have their handles retrieved directly from a SVC. | Handles for services are retrieved from the service manager port, "sm:". Services are an abstraction of ports, they operate the same way except regular ports can have their handles retrieved directly from a SVC. | ||
= sm: = | |||
{| class="wikitable" border="1" | |||
|- | |||
! Cmd || Name | |||
|- | |||
| 0 || [[#Initialize]] | |||
|- | |||
| 1 || [[#GetService]] | |||
|- | |||
| 2 || [[#RegisterService]] | |||
|- | |||
| 3 || | |||
|} | |||
== Initialize == | |||
{| class="wikitable" border="1" | |||
|- | |||
! Word || Value | |||
|- | |||
| 0 || 0x00000004 | |||
|- | |||
| 1 || 0x8000000A | |||
|- | |||
| 2 || 0x00000001 | |||
|- style="border-top: double" | |||
| 0-1 || Pid | |||
|- style="border-top: double" | |||
| 0 || "SCFI" | |||
|- | |||
| 1 || 0x00000000 | |||
|- | |||
| 2 || Always 0. | |||
|} | |||
== GetService == | |||
{| class="wikitable" border="1" | |||
|- | |||
! Word || Value | |||
|- | |||
| 0 || 0x00000004 | |||
|- | |||
| 1 || 0x0000000A | |||
|- style="border-top: double" | |||
| 0 || "SCFI" | |||
|- | |||
| 1 || 0x00000001 | |||
|- | |||
| 2 || Service name, zero padded and casted to u64. | |||
|} | |||
== RegisterService == | |||
{| class="wikitable" border="1" | |||
|- | |||
! Word || Value | |||
|- | |||
| 0 || 0x00000004 | |||
|- | |||
| 1 || 0x0000000C | |||
|- style="border-top: double" | |||
| 0 || "SCFI" | |||
|- | |||
| 1 || 0x00000002 | |||
|- | |||
| 2 || Service name, zero padded and casted to u64. | |||
|- | |||
| 3 || Max sessions? 32-bit integer. | |||
|- | |||
| 4 || Unknown bool | |||
|} | |||
= List = | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- |