Difference between revisions of "Services API"
Line 74: | Line 74: | ||
| am: Application Manager, su: System Update | | am: Application Manager, su: System Update | ||
|- | |- | ||
− | | apm:dbg, apm:sys, fgm, fgm:0, fgm:9, fgm:dbg, [1.0.0-7.0.1] apm, apm:p, [8.0.0+] apm:am | + | | apm:dbg, apm:sys, fgm, fgm:0, fgm:9, fgm:dbg, [1.0.0-7.0.1] apm, [1.0.0-7.0.1] apm:p, [8.0.0+] apm:am |
| [[PPC services]] | | [[PPC services]] | ||
| fgm:1, fgm:2, fgm:3, fgm:4, fgm:5, fgm:6 and fgm:7 used to exist, but are now deprecated. | | fgm:1, fgm:2, fgm:3, fgm:4, fgm:5, fgm:6 and fgm:7 used to exist, but are now deprecated. | ||
Line 95: | Line 95: | ||
|- | |- | ||
| [1.0.0] bpc:c, bpc:b, bpc:r, bpc:w, pcv, pcv:arb, pcv:imm, time:u, time:a, time:s | | [1.0.0] bpc:c, bpc:b, bpc:r, bpc:w, pcv, pcv:arb, pcv:imm, time:u, time:a, time:s | ||
− | [2.0.0+] bpc, bpc:r, pcv, time:u, time:a, time:s, [1.0.0-7.0.1] pcv:arb, pcv:imm, [8.0.0+] clkrst, clkrst:a, clkrst:i, rgltr, rtc | + | [2.0.0+] bpc, bpc:r, pcv, time:u, time:a, time:s, [1.0.0-7.0.1] pcv:arb, pcv:imm, [8.0.0+] clkrst, [8.0.0+] clkrst:a, [8.0.0+] clkrst:i, [8.0.0+] rgltr, [8.0.0+] rtc |
| [[PCV services]] | | [[PCV services]] | ||
| | | |
Revision as of 01:39, 16 April 2019
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:", and are released via svcCloseHandle or when a process is terminated or crashes. Manager service "sm:m" also exists. Services are an abstraction of ports, they operate the same way except regular ports can have their handles retrieved directly from a SVC. Services are also able to limit the number of handles given to other processes.
sm:
This is "nn::sm::detail::IUserInterface".
Cmd | Name |
---|---|
0 | #Initialize |
1 | #GetService |
2 | #RegisterService |
3 | #UnregisterService |
Initialize
Takes a pid descriptor and a reserved input u64.
GetService
Takes a zero-padded service name encoded as an u64 integer. Returns a handle.
RegisterService
Takes a zero-padded service name encoded as an u64 integer, an u8 bool, and an u32 (session count) at the next word. Returns a handle.
UnregisterService
Takes a zero-padded service name encoded as an u64 integer.
sm:m
This is "nn::sm::detail::IManagerInterface".
Cmd | Name |
---|---|
0 | #RegisterProcess |
1 | #UnregisterProcess |
RegisterProcess
Takes a pid and two A descriptors with the ACID and ACI0 service lists. That data originates from NPDM.
UnregisterProcess
Takes a pid.
Service List
Service names | Description | Notes |
---|---|---|
acc:u0, acc:u1, acc:aa, acc:su, [5.0.0+] dauth:0 | Account services | u0: System, u1: User, su: Admin, aa: Baas |
ahid:cd, ahid:hdr, hid, hid:dbg, hid:sys, irs, irs:sys, xcd:sys, [4.0.0+] hid:tmp, [5.0.0+] hidbus | HID services | |
appletAE, appletOE, idle:sys, omm, spsm, [5.0.0+] tcap, [6.0.0+] caps:su, [8.0.0+] apm | AM services | |
[1.0.0-2.3.0] aoc:u, mii:u, mii:e, ns:am, ns:su, ns:dev, pl:u, ovln:rcv, ovln:snd, pdm:ntfy, pdm:qry
[3.0.0+] aoc:u, ns:am2, ns:dev, ns:ec, ns:rid, ns:rt, ns:su, ns:vm, ns:web, ovln:rcv, ovln:snd |
NS Services | am: Application Manager, su: System Update |
apm:dbg, apm:sys, fgm, fgm:0, fgm:9, fgm:dbg, [1.0.0-7.0.1] apm, [1.0.0-7.0.1] apm:p, [8.0.0+] apm:am | PPC services | fgm:1, fgm:2, fgm:3, fgm:4, fgm:5, fgm:6 and fgm:7 used to exist, but are now deprecated. |
arp:r, arp:w, [2.0.0+] bgtc:t, [2.0.0+] bgtc:sc | Glue services | |
audin:a, audin:d, audin:u, audout:a, audout:d, audout:u, audren:a, audren:d, audren:u, audrec:a, audrec:d, audrec:u, audctl, codecctl, hwopus, auddebug, [6.0.0+] auddev | Audio services | |
banana | Profiler services | Not currently available on retail units. |
bcat:a, bcat:u, bcat:m, bcat:s, news:a, news:c, news:m, news:p, news:v, prepo:u, prepo:s, prepo:m, [1.0.0-5.1.0] prepo:a, [6.0.0+] prepo:a2 | BCAT services | |
[1.0.0] bpc:c, bpc:b, bpc:r, bpc:w, pcv, pcv:arb, pcv:imm, time:u, time:a, time:s
[2.0.0+] bpc, bpc:r, pcv, time:u, time:a, time:s, [1.0.0-7.0.1] pcv:arb, pcv:imm, [8.0.0+] clkrst, [8.0.0+] clkrst:a, [8.0.0+] clkrst:i, [8.0.0+] rgltr, [8.0.0+] rtc |
PCV services | |
bsd:u, bsd:s, bsdcfg, ethc:c, ethc:i, nsd:u, nsd:a, sfdnsres | Sockets services | |
btdrv, [5.0.0+] bt | Bluetooth Driver services | |
btm, btm:dbg, btm:sys, [5.0.0+] btm:u | BTM services | |
caps:a, caps:c, [1.0.0] mm:u, [5.0.0+] caps:u | Capture services | a: AlbumAccessor, c: AlbumControl |
[2.0.0+] caps:sc, [2.0.0+] caps:ss, vi:m, vi:s, vi:u, cec-mgr, [2.0.0+] mm:u, [4.0.0-5.1.0] caps:su | Display services | |
dispdrv | Nvnflinger services | |
dmnt:- | Debug Monitor services | Not currently available on retail units. |
erpt:c, erpt:r | Error Report services | |
eupld:c, eupld:r | Error Upload services | |
es | ETicket services | |
fan, psm, tc, ts, pcm | PTM services | pcm is not available on retail units. |
fatal:u, fatal:p | Fatal services | |
friend:u, friend:v, friend:m, friend:s, friend:a, [5.0.0+] nd:app, nd:sys | Friend services | |
fsp-srv, fsp-ldr, fsp-pr | Filesystem services | srv: Main, ldr: Loader, pr: Program Registry |
gpio, i2c, i2c:pcv, pinmux, pwm, uart, [3.0.0+] sasbus | Bus services | |
htc, htcs, htc:tenv, file_io, gds, tma_log, tmagent | TMA services | |
jit:u | JIT services | Not currently available on retail units. |
lbl | Backlight services | |
ldn:m, ldn:s, ldn:u, [5.0.0+] ndd | LDN services | |
[1.0.0+] ldr:pm, ldr:ro, ldr:shel, ldr:dmnt
[3.0.0+] ldr:pm, ldr:shel, ldr:dmnt |
Loader services | |
lm, lm:get | Log services | |
manu | Manu Services | "Manufacturing", present in factory firmware but not installed on retail systems. |
lr, ncm, ncm:v | NCM services | |
nfc:am, nfc:mf:u, nfc:user, nfc:sys, nfp:user, nfp:dbg, nfp:sys | NFC services | |
nifm:u, nifm:a, nifm:s | Network Interface services | |
nim, nim:shp, ntc, [5.0.0+] nim:eca, [7.0.0+] nim:ecas | NIM services | |
npns:u, npns:s | NPNS services | |
nvdrv:a, nvdrv:s, nvdrv:t, nvdrv, nvdrvdbg, nvgem:c, nvgem:cd, nvmemp | NV services | |
pcie, [6.0.0+] pcie:log | PCIe services | |
pctl, pctl:a, pctl:s, pctl:r | Parental Control services | |
pm:bm, pm:info, pm:shell | Process Manager services | |
psc:c, psc:m, [5.0.0+] srepo:u, srepo:a | PSC services | |
[3.0.0+] ldr:ro, ro:dmnt, [7.0.0+] ro:1 | RO services | |
set, set:fd, set:cal, set:sys | Settings services | cal: calibration, sys: System Settings |
[3.0.0+] mii:u, mii:e, pdm:ntfy, pdm:qry, pl:u, [5.0.0+] miiimg, [6.0.0+] avm | Shared Database services | |
ssl | SSL services | |
csrng, spl:, [4.0.0+] spl:mig, spl:fs, spl:ssl, spl:es, [5.0.0+] spl:manu | SPL services | |
sf-uds | ? | System debug applet "recovery" has access to this service, but it doesn't appear to exist. |
tspm | ? | Applications on [1.0.0] used to have access to this service, but it doesn't appear to be present on retail devices. |
usb:ds, usb:hs, usb:pd, usb:pd:c, [1.0.0] usb:pd:m, usb:pm, [7.0.0+] usb:hs:a, [7.0.0+] usb:qdb, [8.0.0+] usb:obsv | USB services | |
wlan:inf, wlan:lcl, wlan:lg, wlan:lga, wlan:sg, wlan:soc, [6.0.0+] wlan:dtc | WLAN services | |
[4.0.0+] grc:c, [6.0.0+] grc:d | GRC services | |
[4.0.0+] mig:usr | Migration services | |
[4.0.0+] caps:dc | Jpegdec services | |
[6.0.0+] olsc:s | OLSC services |