Difference between revisions of "Services API"

From Nintendo Switch Brew
Jump to navigation Jump to search
(sm:m commands)
Line 120: Line 120:
 
|
 
|
 
|-
 
|-
| aoc:u, ovln:rcv, ovln:snd, ns:am2, ns:dev, ns:ec, ns:rid, ns:rt, ns:su, ns:vm, ns:web
+
| [ [[1.0.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]]
 
| [[NS Services]]
| am: Application Manager, su: System Update. Version [[3.0.0]] replaced ns:am with ns:am2, ns:ec, ns:rid, ns:rt, ns:vm, and ns:web.
+
| am: Application Manager, su: System Update
 
|-
 
|-
 
| apm, apm:p, apm:sys, fgm, fgm:0, fgm:9, (fgm:dbg?)
 
| apm, apm:p, apm:sys, fgm, fgm:0, fgm:9, (fgm:dbg?)
Line 208: Line 210:
 
|
 
|
 
|-
 
|-
| ldr:pm, ldr:shel
+
| [ [[1.0.0]]+ ] ldr:pm, ldr:ro, ldr:shel, ldr:dmnt
 +
 
 +
[ [[3.0.0]]+ ] ldr:pm, ldr:shell
 
| [[Loader services]]
 
| [[Loader services]]
| Prior to version [[3.0.0]], ldr:ro and ldr:dmnt were hosted by ldr instead of ro.
+
|
 
|-
 
|-
 
| lm
 
| lm
Line 256: Line 260:
 
|  
 
|  
 
|-
 
|-
| ldr:ro, ro:dmnt
+
| [ [[3.0.0]]+ ] ldr:ro, ro:dmnt
 
| [[Loader services|RO services]]
 
| [[Loader services|RO services]]
| These services were split out of LDR into RO in version [[3.0.0]]
+
|
 
|-
 
|-
 
| set, set:fd, set:cal, set:sys
 
| set, set:fd, set:cal, set:sys
Line 264: Line 268:
 
| cal: calibration, sys: System Settings
 
| cal: calibration, sys: System Settings
 
|-
 
|-
| mii:u, mii:e, pdm:ntfy, pdm:qry, pl:u
+
| [ [[3.0.0]]+ ] mii:u, mii:e, pdm:ntfy, pdm:qry, pl:u
 
| Shared Database Services
 
| Shared Database Services
| These services were split out of NS into SDB in version [[3.0.0]]
+
|
 
|-
 
|-
 
| ssl
 
| ssl

Revision as of 15:04, 16 July 2017

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:". 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.

sm:

Cmd Name
0 #Initialize
1 #GetService
2 #RegisterService
3 #UnregisterService

Initialize

Word Value
0 0x00000004
1 0x8000000A
2 0x00000001
0-1 Pid
0 "SFCI"
1 0x00000000
2 Always 0.

GetService

Word Value
0 0x00000004
1 0x0000000A
0 "SFCI"
1 0x00000001
2 Service name, zero padded and casted to u64.

RegisterService

Word Value
0 0x00000004
1 0x0000000C
0 "SFCI"
1 0x00000002
2 Service name, zero padded and casted to u64.
3 Max sessions? 32-bit integer.
4 Unknown bool

UnregisterService

Word Value
0 0x00000004
1 0x0000000A
0 "SFCI"
1 0x00000003
2 Service name, zero padded and casted to u64.

sm:m

Cmd Name Arguments Notes
0 RegisterProcess u32 PID + 2 A Descriptors (unknown, probably service access lists of some kind)
1 UnregisterProcess u32 PID


Service List

Service names Description Notes
acc:u0, acc:u1, acc:aa, acc:su Account services u0: System, u1: User, su: Admin, aa: Baas
ahid:cd, ahid:hdr, hid, hid:dbg, hid:sys, (htc?), irs, irs:sys, xcd:sys HID services
appletAE, appletOE, idle:sys, omm, spsm Applet services, OMM services
[ 1.0.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, apm:p, apm:sys, fgm, fgm:0, fgm:9, (fgm:dbg?) APM services
arp:r, arp:w, bgtc:t, bgtc:sc Glue services r: Reader, w: Writer
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 Audio services
bcat:a, bcat:u, bcat:m, bcat:s, news:a, news:c, news:m, news:p, news:v, prepo:u, prepo:s, prepo:m, prepo:a BCAT services
bpc, bpc:r, pcv, pcv:imm, time:u, time:a, time:s BPC services
bsd:u, bsd:s, bsdcfg, ethc:c, ethc:i, nsd:u, nsd:a, sfdnsres Sockets services, NSD services
btdrv Bluetooth Driver services
btm, btm:dbg, btm:sys Battery services
caps:a, caps:c Capture services a: AlbumAccessor, c: AlbumControl
caps:sc, caps:ss, mm:u, vi:m, vi:s, vi:u, cec-mgr Display services
csrng Secure RNG services
dispdrv Nvnflinger services
erpt:c, erpt:r Error Report services
es ETicket services
fan, psm, tc, ts PTM services
fatal:u, fatal:p Fatal Error services u: User, p: Privileged
friend:u, friend:v, friend:m, friend:s, friend:a Friend services
fsp-srv, fsp-ldr, fsp-pr Filesystem services srv: Main, ldr: Loader, pr: Program Registry
gpio, i2c, i2c:pcv, pinmux, pwm, uart Bus services
lbl Backlight services
ldn:m, ldn:s, ldn:u Local Network Monitor services
[ 1.0.0+ ] ldr:pm, ldr:ro, ldr:shel, ldr:dmnt

[ 3.0.0+ ] ldr:pm, ldr:shell

Loader services
lm Log services
lr, ncm, ncm:v Location Resolver services
nfc:am, nfc:mf:u, nfc:user, nfc:sys NFC services
nifm:u, nifm:a, nifm:s Network Interface services
nim, nim:shp, ntc NIM services shp: eShop
npns:u, npns:s NPNS services
nvdrv:a, nvdrv:s, nvdrv:t, nvdrv, nvdrvdbg, nvgem:c, nvgem:cd, nvmemp NV services
pcie 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 PSC services
[ 3.0.0+ ] ldr:ro, ro:dmnt 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 Shared Database Services
ssl SSL services
spl: SPL services
usb:ds, usb:hs, usb:pd, usb:pd:c, usb:pm USB services
wlan:inf, wlan:lcl, wlan:lg, wlan:lga, wlan:sg, wlan:soc WLAN services