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). | | 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:", 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: = | | = sm: = |
| + | This is "nn::sm::detail::IUserInterface". |
| + | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| |- | | |- |
| ! Cmd || Name | | ! Cmd || Name |
| |- | | |- |
− | | 0 || [[#Initialize]] | + | | 0 || [[#RegisterClient]] |
| |- | | |- |
− | | 1 || [[#GetService]] | + | | 1 || [[#GetServiceHandle]] |
| |- | | |- |
| | 2 || [[#RegisterService]] | | | 2 || [[#RegisterService]] |
| |- | | |- |
| | 3 || [[#UnregisterService]] | | | 3 || [[#UnregisterService]] |
| + | |- |
| + | | 4 || [11.0.0-11.0.1] [[#DetachClient]] |
| |} | | |} |
| | | |
− | == Initialize == | + | == RegisterClient == |
− | {| class="wikitable" border="1"
| + | Takes a PID-descriptor and a reserved input u64. |
− | |-
| |
− | ! Word || Value
| |
− | |-
| |
− | | 0 || 0x00000004
| |
− | |-
| |
− | | 1 || 0x8000000A
| |
− | |-
| |
− | | 2 || 0x00000001
| |
− | |- style="border-top: double"
| |
− | | 0-1 || Pid
| |
− | |- style="border-top: double"
| |
− | | 0 || "SFCI"
| |
− | |-
| |
− | | 1 || 0x00000000
| |
− | |-
| |
− | | 2 || Always 0.
| |
− | |}
| |
| | | |
− | == GetService == | + | == GetServiceHandle == |
− | {| class="wikitable" border="1"
| + | Takes a zero-padded service name encoded as an u64 integer. Returns a handle. |
− | |-
| |
− | ! Word || Value
| |
− | |-
| |
− | | 0 || 0x00000004
| |
− | |-
| |
− | | 1 || 0x0000000A
| |
− | |- style="border-top: double"
| |
− | | 0 || "SFCI"
| |
− | |-
| |
− | | 1 || 0x00000001
| |
− | |-
| |
− | | 2 || Service name, zero padded and casted to u64.
| |
− | |}
| |
| | | |
| == RegisterService == | | == RegisterService == |
− | {| class="wikitable" border="1"
| + | Takes a zero-padded service name encoded as an u64 integer, an u8 bool '''IsLight''', and a s32 '''MaxSessions''' at the next word. Returns a handle. |
− | |-
| + | |
− | ! Word || Value
| + | [12.0.0+] This is only available with tipc. |
− | |-
| |
− | | 0 || 0x00000004
| |
− | |-
| |
− | | 1 || 0x0000000C
| |
− | |- style="border-top: double"
| |
− | | 0 || "SFCI"
| |
− | |-
| |
− | | 1 || 0x00000002
| |
− | |-
| |
− | | 2 || Service name, zero padded and casted to u64.
| |
− | |-
| |
− | | 3 || Max sessions? 32-bit integer.
| |
− | |-
| |
− | | 4 || Unknown bool
| |
− | |}
| |
| | | |
| == UnregisterService == | | == UnregisterService == |
| + | Takes a zero-padded service name encoded as an u64 integer. |
| + | |
| + | [12.0.0+] This is only available with tipc. |
| + | |
| + | == DetachClient == |
| + | Takes a PID-descriptor and a reserved input u64. |
| + | |
| + | = sm:m = |
| + | This is "nn::sm::detail::IManagerInterface". |
| + | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| |- | | |- |
− | ! Word || Value | + | ! Cmd || Name |
| |- | | |- |
− | | 0 || 0x00000004 | + | | 0 || [[#RegisterProcess]] |
| |- | | |- |
− | | 1 || 0x0000000A | + | | 1 || [[#UnregisterProcess]] |
− | |- style="border-top: double"
| |
− | | 0 || "SFCI"
| |
− | |-
| |
− | | 1 || 0x00000003
| |
− | |-
| |
− | | 2 || Service name, zero padded and casted to u64.
| |
| |} | | |} |
| + | |
| + | == RegisterProcess == |
| + | Takes a PID and two type-0x5 input buffers with the ACID and ACI0 service lists. That data originates from [[NPDM]]. |
| + | |
| + | == UnregisterProcess == |
| + | Takes a PID. |
| | | |
| = Service List = | | = Service List = |
Line 96: |
Line 65: |
| ! scope="col" width="200" | Notes | | ! scope="col" width="200" | Notes |
| |- | | |- |
− | | acc:u1, acc:aa, acc:su | + | | [1.0.0-12.1.0] acc:u0, [1.0.0-12.1.0] acc:u1, acc:aa, [1.0.0-12.1.0] acc:su, [5.0.0+] dauth:0, [13.0.0+] acc:e, [13.0.0+] acc:e:u1, [13.0.0+] acc:e:u2 |
| | [[Account services]] | | | [[Account services]] |
− | | u1: User, su: Admin | + | | u0: System, u1: User, su: Admin, aa: Baas |
| |- | | |- |
− | | aoc:u | + | | [1.0.0-8.1.0] ahid:cd, [1.0.0-8.1.0] ahid:hdr, hid, hid:dbg, hid:sys, irs, irs:sys, xcd:sys, [3.0.0-7.0.1] hid:tmp, [5.0.0+] hidbus |
− | | AddOn Content services | + | | [[HID services]] |
| | | | | |
| |- | | |- |
− | | appletAE, appletOE | + | | appletAE, appletOE, idle:sys, omm, spsm, [5.0.0-10.2.0] tcap, [6.0.0+] caps:su, [8.0.0+] apm |
− | | Applet services | + | | [[Applet Manager 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, [1.0.0-7.0.1] ovln:rcv, [1.0.0-7.0.1] ovln:snd, [11.0.0+] ns:ro, [13.0.0+] acc:su, [13.0.0+] acc:u0, [13.0.0+] acc:u1, [15.0.0+] ns:sweb |
| + | | [[NS Services]] |
| + | | am: Application Manager, su: System Update |
| + | |- |
| + | | [1.0.0-8.1.0] apm:dbg, [1.0.0-8.1.0] apm:sys, [1.0.0] fgm:1, fgm:2, fgm:3, fgm:4, fgm:5, fgm:6, fgm:7, [1.0.0-8.1.0] fgm, [1.0.0-8.1.0] fgm:0, [1.0.0-8.1.0] fgm:9, [1.0.0-8.1.0] fgm:dbg, [1.0.0-7.0.1] apm, [1.0.0-7.0.1] apm:p, [8.0.0-8.1.0] apm:am |
| + | | [[PPC services]] |
| + | | |
| + | |- |
| + | | arp:r, arp:w, [2.0.0+] bgtc:t, [2.0.0+] bgtc:sc, [9.0.0+] time:a, [9.0.0+] time:r, [9.0.0+] time:u, [9.0.0+] notif:a, [9.0.0+] notif:s, [11.0.0+] ectx:aw, [11.0.0+] ectx:r, [11.0.0+] ectx:w, [16.0.0+] pl:u |
| + | | [[Glue services]] |
| + | | |
| |- | | |- |
− | | apm, apm:p, apm:sys | + | | [1.0.0-10.2.0] audin:a, [1.0.0-10.2.0] audin:d, audin:u, [1.0.0-10.2.0] audout:a, [1.0.0-10.2.0] audout:d, audout:u, [1.0.0-10.2.0] audren:a, [1.0.0-10.2.0] audren:d, audren:u, audrec:a, audrec:d, audrec:u, audctl, [1.0.0-2.3.0] codecctl, hwopus, auddebug, [6.0.0+] auddev, [11.0.0+] aud:a, [11.0.0+] aud:d |
− | | ? | + | | [[Audio services]] |
| | | | | |
| |- | | |- |
− | | arp:r, arp:w | + | | <nowiki>banana</nowiki> |
− | | Activity Report services? | + | | [[Profiler services]] |
− | | r: Reader, w: Writer | + | | Not currently available on retail units. |
| |- | | |- |
− | | audin:a, audin:d, audin:u, audout:a, audout:d, audout:u, audren:a, audren:d, audren:u | + | | <nowiki>[2.0.0+] bcat:a, [2.0.0+] bcat:u, [2.0.0+] bcat:m, [2.0.0+] 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, [1.0.0] prepo:d, [6.0.0+] prepo:a2</nowiki>, [13.0.0+] mnpp:app, [13.0.0+] mnpp:sys, [13.0.0+] mnpp:web |
− | | Audio services | + | | [[BCAT services]] |
| | | | | |
| |- | | |- |
− | | bgtc:t, bgtc:sc | + | | [1.0.0] bpc:c, bpc:b, bpc:r, bpc:w, pcv, pcv:arb, pcv:imm, time:u, time:a, time:s |
− | | Task services | + | [2.0.0+] bpc, bpc:r, pcv, [2.0.0-8.1.0] time:u, [2.0.0-8.1.0] time:a, [2.0.0-8.1.0] time:s, [1.0.0-7.0.1] pcv:arb, [1.0.0-7.0.1] 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]] |
| | | | | |
| |- | | |- |
− | | bpc, bpc:r | + | | bsd:u, bsd:s, [15.0.0+] bsd:nu, bsdcfg, [17.0.0+] ifcfg, [18.0.0+] bsd:a, [1.0.0-14.1.2] ethc:c, [1.0.0-14.1.2] ethc:i, nsd:u, nsd:a, sfdnsres, [18.0.0+] dns:priv |
− | | [[BPC services]] | + | | [[Sockets services]] |
| | | | | |
| |- | | |- |
− | | bsd:u, bsd:s | + | | btdrv, [5.0.0+] bt |
− | | Sockets services | + | | [[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, [3.0.0-5.1.0] caps:su, [11.0.0+] lbl |
| + | | [[Display services]] |
| + | | |
| + | |- |
| + | | dispdrv |
| + | | [[Nvnflinger services]] |
| | | | | |
| |- | | |- |
− | | btm, btm:dbg, btm:sys | + | | dmnt:- |
− | | Bluetooth services? | + | | [[Debug Monitor services]] |
− | | | + | | Not currently available on retail units. |
| |- | | |- |
− | | caps:a, caps:c, caps:sc, caps:ss | + | | erpt:c, erpt:r, [13.0.0+] sprof:bg, [13.0.0+] sprof:sp |
− | | Capture services | + | | [[Error Report services]] |
− | | a: Album, ss: Screenshot | + | | |
| |- | | |- |
− | | erpt:c, erpt:r | + | | eupld:c, eupld:r |
− | | Error Report services | + | | [[Error Upload services]] |
| | | | | |
| |- | | |- |
− | | es | + | | es, [13.0.0+] ndrm:la, [13.0.0+] ndrm:lu |
− | | ETicket services? | + | | [[ETicket services]] |
| | | | | |
| |- | | |- |
− | | fan | + | | fan, psm, tc, ts, <nowiki>pcm</nowiki>, [9.0.0+] apm:sys, [9.0.0+] fgm, [9.0.0+] fgm:0, [9.0.0+] fgm:9, [9.0.0+] fgm:dbg, [9.0.0+] apm:am, [10.0.0-10.2.0] lbl |
− | | ? | + | | [[PTM services]] |
− | | | + | | pcm is not available on retail units. |
| |- | | |- |
| | fatal:u, fatal:p | | | fatal:u, fatal:p |
− | | Fatal Error services | + | | [[Fatal services]] |
− | | u: User, p: Privileged?
| |
− | |-
| |
− | | fgm
| |
− | | ?
| |
| | | | | |
| |- | | |- |
− | | friend:u, friend:v, friend:m, friend:s, friend:a | + | | friend:u, friend:v, friend:m, friend:s, friend:a, [5.0.0-6.0.0] nd:app, [5.0.0-6.0.0] nd:sys |
− | | Friend services | + | | [[Friend services]] |
| | | | | |
| |- | | |- |
Line 168: |
Line 164: |
| | srv: Main, ldr: Loader, pr: Program Registry | | | srv: Main, ldr: Loader, pr: Program Registry |
| |- | | |- |
− | | gpio | + | | gpio, i2c, i2c:pcv, pinmux, pwm, uart, [3.0.0+] sasbus, [8.1.1+] led |
− | | GPIO services
| + | | [[Bus services]] |
− | |
| |
− | |-
| |
− | | hid, hid:dbg, hid:sys
| |
− | | [[HID services]] | |
| | | | | |
| |- | | |- |
− | | i2c, i2c:pcv | + | | htc, htcs, htc:tenv, file_io, gds, tma_log, tmagent |
− | | [[I2C services]] | + | | [[TMA services]] |
| | | | | |
| |- | | |- |
− | | irs, irs:sys | + | | jit:u |
− | | IR Sensor services? | + | | [[JIT services]] |
| | | | | |
| |- | | |- |
− | | lbl | + | | [1.0.0-9.2.0] lbl |
| | [[Backlight services]] | | | [[Backlight services]] |
| | | | | |
| |- | | |- |
− | | ldn:m, ldn:s, ldn:u | + | | ldn:m, ldn:s, ldn:u, [5.0.0-6.0.0] ndd, [9.0.0+] lp2p:app, [9.0.0+] lp2p:sys, [9.1.0+] lp2p:m |
− | | [[Local Network Monitor services]] | + | | [[LDN services]] |
| | | | | |
| |- | | |- |
− | | ldr:pm, ldr:ro, ldr:shel | + | | [1.0.0+] ldr:pm, ldr:ro, ldr:shel, ldr:dmnt |
| + | |
| + | [3.0.0+] ldr:pm, ldr:shel, ldr:dmnt |
| | [[Loader services]] | | | [[Loader services]] |
| | | | | |
| |- | | |- |
− | | lm | + | | lm, lm:get |
− | | Log services | + | | [[Log services]] |
| | | | | |
| |- | | |- |
− | | lr | + | | manu |
− | | ? | + | | [[Manu Services]] |
− | | | + | | "Manufacturing", present in factory firmware but not installed on retail systems. |
| |- | | |- |
− | | mii:u, mii:e | + | | lr, ncm, ncm:v |
− | | Mii services | + | | [[NCM services]] |
| | | | | |
| |- | | |- |
− | | ncm | + | | nfc:am, nfc:mf:u, nfc:user, nfc:sys, nfp:user, nfp:dbg, nfp:sys |
− | | [[Content Manager services]] | + | | [[NFC services]] |
| | | | | |
| |- | | |- |
Line 216: |
Line 210: |
| | | | | |
| |- | | |- |
− | | nim, nim:shp | + | | nim, nim:shp, ntc, [5.0.0+] nim:eca, [7.0.0+] nim:ecas |
− | | NIM services | + | | [[NIM services]] |
− | | shp: eShop | + | | |
| |- | | |- |
| | npns:u, npns:s | | | npns:u, npns:s |
− | | ? | + | | [[NPNS services]] |
| | | | | |
| |- | | |- |
− | | ns:am, ns:su, ns:dev | + | | nvdrv:a, nvdrv:s, nvdrv:t, nvdrv, nvdrvdbg, nvgem:c, nvgem:cd, nvmemp, [10.0.0+] nvdbg:d |
− | | [[NS Services]] | + | | [[NV services]] |
− | | am: Application Manager, su: System Update | + | | |
| |- | | |- |
− | | nsd:u, nsd:a | + | | pcie, [6.0.0+] pcie:log |
− | | [[NSD services]] | + | | [[PCIe services]] |
| | | | | |
| |- | | |- |
− | | ntc | + | | pctl, pctl:a, pctl:s, pctl:r |
− | | ? | + | | [[Parental Control services]] |
− | | | + | | |
| |- | | |- |
− | | nvdrv:a, nvdrv:s, nvdrv:t, nvmemp, mm:u | + | | pm:bm, pm:info, pm:shell |
− | | [[NV services]] | + | | [[Process Manager services]] |
| | | | | |
| |- | | |- |
− | | omm | + | | psc:c, psc:m, [5.0.0+] srepo:u, [5.0.0+] srepo:a, [8.0.0+] ovln:rcv, [8.0.0+] ovln:snd, [9.0.0+] psc:l, [9.0.0+] time:su, [9.0.0+] time:s, [9.0.0+] time:al, [9.0.0+] time:m, [9.0.0+] time:p, [9.0.0+] ins:r, [9.0.0+] ins:s, [11.0.0+] hshl:set, [11.0.0+] hshl:sys |
− | | ? | + | | [[PSC services]] |
| | | | | |
| |- | | |- |
− | | ovln:rcv, ovln:snd | + | | [3.0.0+] ldr:ro, ro:dmnt, [7.0.0+] ro:1 |
− | | Overlay Notification services
| + | | [[RO services]] |
− | | rcv: Receiver, snd: Sender
| |
− | |-
| |
− | | pcie
| |
− | | PCIe services
| |
− | |
| |
− | |-
| |
− | | pctl, pctl:a, pctl:s, pctl:r
| |
− | | Parental Control services | |
| | | | | |
| |- | | |- |
− | | pcv, pcv:imm | + | | set, set:fd, set:cal, set:sys |
− | | ? | + | | [[Settings services]] |
− | | | + | | cal: calibration, sys: System Settings |
| |- | | |- |
− | | pdm:ntfy, pdm:qry | + | | [3.0.0+] mii:u, [3.0.0+] mii:e, [3.0.0+] pdm:ntfy, [3.0.0+] pdm:qry, [3.0.0-15.0.1] pl:u, [5.0.0+] miiimg, [6.0.0+] avm, [9.0.0+] pl:s |
− | | Play Log services | + | | [[Shared Database services]] |
| | | | | |
| |- | | |- |
− | | pl:u | + | | ssl, [15.0.0+] ssl:s |
− | | Shared Font services | + | | [[SSL services]] |
| | | | | |
| |- | | |- |
− | | pm:bm, pm:shell | + | | csrng, spl:, [4.0.0+] spl:mig, [4.0.0+] spl:fs, [4.0.0+] spl:ssl, [4.0.0+] spl:es, [5.0.0+] spl:manu |
− | | [[Process Manager services]] | + | | [[SPL services]] |
− | | | + | | |
| |- | | |- |
− | | prepo:u, prepo:s, prepo:m, prepo:a | + | | sf-uds |
− | | [[Play Report services]] | + | | ? |
− | | | + | | System debug applet "recovery" has access to this service, but it doesn't appear to exist. |
| |- | | |- |
− | | psm | + | | tspm |
| | ? | | | ? |
− | | | + | | Applications on [1.0.0] used to have access to this service, but it doesn't appear to be present on retail devices. |
| |- | | |- |
− | | pwm | + | | 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]] |
| | | | | |
| |- | | |- |
− | | set, set:fd, set:cal, set:sys | + | | [1.0.0-14.1.2] wlan:inf, [1.0.0-14.1.2] wlan:lcl, [1.0.0-14.1.2] wlan:lg, [1.0.0-14.1.2] wlan:lga, [1.0.0-14.1.2] wlan:sg, [1.0.0-14.1.2] wlan:soc, [6.0.0-14.1.2] wlan:dtc, [15.0.0+] wlan, [15.0.0+] wlan:nd, [15.0.0+] wlan:p |
− | | [[Settings services]] | + | | [[WLAN services]] |
− | | cal: Calendar?, sys: System Settings | + | | |
| |- | | |- |
− | | sfdnsres | + | | [4.0.0+] grc:c, [6.0.0+] grc:d |
− | | DNS resolver services | + | | [[GRC services]] |
− | | | + | | |
| |- | | |- |
− | | spsm | + | | [4.0.0+] mig:usr |
− | | ? | + | | [[Migration services]] |
| | | | | |
| |- | | |- |
− | | ssl | + | | [4.0.0+] caps:dc |
− | | SSL services | + | | [[Jpegdec services]] |
− | | | + | | |
| |- | | |- |
− | | tc | + | | [6.0.0+] olsc:s, [10.0.0+] olsc:u, [13.1.0+] spbg:sp |
− | | ? | + | | [[OLSC services]] |
| | | | | |
| |- | | |- |
− | | time:u, time:a, time:s | + | | [9.0.0+] ngct:s, [9.0.0+] ngct:u |
− | | Time services | + | | [[NGCT services]] |
− | | | + | | |
| |- | | |- |
− | | ts | + | | [10.0.0+] pgl |
− | | ? | + | | [[PGL services]] |
| | | | | |
| |- | | |- |
− | | uart | + | | [11.0.0+] capmtp |
− | | [[UART services]] | + | | [[Capmtp services]] |
| | | | | |
| |- | | |- |
− | | vi:m, vi:s, vi:u | + | | [15.0.0+] eth:nd |
− | | [[Display services]] | + | | [[Ethernet services]] |
− | |
| + | |- |
| + | | [16.0.0+] ngc:u |
| + | | [[NGC services]] |
| |} | | |} |
| | | |
| [[Category:Services]] | | [[Category:Services]] |