Line 5:
Line 5:
Processes with PID less than or equal to the number of NATIVE_FIRM built-in modules (fs, sm, pm, pxi, ldr) have access to all services. This value is obtained from [[SVC|svcGetSystemInfo]]. Other processes are limited to access services listed in their [[NCCH/Extended_Header#ARM11_Local_System_Capabilities|service access control list]], as passed to [[SRVPM:RegisterProcess]].
Processes with PID less than or equal to the number of NATIVE_FIRM built-in modules (fs, sm, pm, pxi, ldr) have access to all services. This value is obtained from [[SVC|svcGetSystemInfo]]. Other processes are limited to access services listed in their [[NCCH/Extended_Header#ARM11_Local_System_Capabilities|service access control list]], as passed to [[SRVPM:RegisterProcess]].
−
Attempting to use [[SRV:GetServiceSession|GetServiceSession]] with a service that the process has access to when that service isn't registered, results in [[SVC|svcSendSyncRequest]] never returning(the exact cause is unknown).
+
Attempting to use [[SRV:GetServiceHandle|GetServiceHandle]] with a service that the process has access to when that service isn't registered will block until it is registered.
==Service Manager Port "srv:"==
==Service Manager Port "srv:"==
Line 56:
Line 56:
|}
|}
−
It appears these "port" commands can be used for transferring arbitrary handles, however [[SRV:GetPort|GetPort]] still uses service-access-control validation like [[SRV:GetServiceHandle|GetServiceHandle]].
+
It appears these "port" commands can be used for transferring arbitrary handles, however [[SRV:GetPort|GetPort]] still uses the same service-access-control validation as [[SRV:GetServiceHandle|GetServiceHandle]]. Despite this fact, it appears that a "port" and a service with the same name can coexist independently.
==Service Manager Process-Manager Port/Service "srv:pm"==
==Service Manager Process-Manager Port/Service "srv:pm"==
Line 88:
Line 88:
|-
|-
! ID
! ID
+
! Published by
+
! Subscribed by
! Description
! Description
|-
|-
| 0x100
| 0x100
−
| This indicates that all processes must terminate: power-off, reboot, or [[FIRM]]-launch.
+
|
+
| Not Needed
+
| This indicates that the recipient must terminate.
+
|-
+
| 0x101
+
| PTM
+
| NS
+
| Signaled on sleep mode entry.
+
|-
+
| 0x102
+
| PTM
+
| NS
+
| Sleep Mode related?
+
|-
+
| 0x103
+
| PTM
+
| NS, CSND, NWM, AC, NIM
+
| Fired on sleep mode entry (Kernel state is modified by PTM after publishing this)
|-
|-
| 0x104
| 0x104
−
| This indicates that the system is entering sleep mode. (PTM:NotifySleepPreparationComplete needed for this and the following?)
+
| PTM
+
| HID
+
| This indicates that the system is entering sleep mode. (Kernel state is modified by PTM before publishing this)
|-
|-
| 0x105
| 0x105
+
| PTM
+
| NS, DSP, CSND, GSP, CODEC, CAMERA, HID, QTM, MIC, IR, NWM, FRIENDS, AC, CECD, ACT, NDM, NIM
| This indicates that the system has exited sleep mode.
| This indicates that the system has exited sleep mode.
+
|-
+
| 0x106
+
| PTM
+
| NS, MIC, AC, NEWS, CECD, BOSS
+
| Fired after sleep mode exit.
|-
|-
| 0x107
| 0x107
−
| Unknown. Subscribed to by CECD module.
+
| PTM
+
| NWM, CECD, BOSS, NDM, NIM, NEWS
+
| Unknown.
|-
|-
| 0x108
| 0x108
−
| error at boot?
+
| PTM
+
| GSP, QTM
+
| System is going to Power Down.
|-
|-
| 0x109
| 0x109
−
| ? (Subscribed to by GSP)
+
| CFG
+
| GSP
+
| CFG block 0x00050001 has been modified, change LCD brightness/PWM settings
+
|-
+
| 0x10B
+
| CFG
+
| CAMERA
+
| ?
|-
|-
| 0x10C
| 0x10C
−
| Unknown.
+
| PM
+
|
+
| A Regular application has started.
|-
|-
| 0x110-0x11F
| 0x110-0x11F
−
| Unknown. See [[PMApp:LaunchTitle#Launch_Flags|PM launch flags]].
+
| PM
+
| NS
+
| Sent on application exit. See [[PMApp:LaunchTitle#Launch_Flags|PM launch flags]].
|-
|-
| 0x179
| 0x179
−
| Unknown.
+
| PM
+
| PTM, NS
+
| All processes other than PTM and NS have terminated.
+
|-
+
| 0x200
+
|
+
| NS
+
| Signaled just before sleep mode is exited from.
|-
|-
| 0x202
| 0x202
+
| MCU
+
| NS
| POWER button pressed
| POWER button pressed
|-
|-
| 0x203
| 0x203
+
| MCU
+
| NS
| POWER button held long
| POWER button held long
|-
|-
| 0x204
| 0x204
+
| MCU
+
| NS
| HOME button pressed
| HOME button pressed
|-
|-
| 0x205
| 0x205
+
| MCU
+
| NS
| HOME button released
| HOME button released
|-
|-
| 0x206
| 0x206
−
| This is signaled by [[NWMEXT:ControlWirelessEnabled]] and when the physical Wi-Fi slider is enabled
+
| MCU / NWM
+
| NWM
+
| The physical Wi-Fi slider state changed
|-
|-
| 0x207
| 0x207
+
|
+
| MENU
| SD card inserted
| SD card inserted
|-
|-
| 0x208
| 0x208
+
|
+
| MENU
| Game cartridge inserted
| Game cartridge inserted
|-
|-
| 0x209
| 0x209
+
|
+
| NS, MENU
| SD card removed
| SD card removed
|-
|-
| 0x20A
| 0x20A
+
|
+
| NS, MENU
| Game cartridge removed
| Game cartridge removed
|-
|-
| 0x20B
| 0x20B
+
|
+
| NS, MENU
| Game cartridge inserted or removed
| Game cartridge inserted or removed
|-
|-
| 0x20C
| 0x20C
−
| mcu-module publishes this on a (fatal) hardware condition?, ptm throws fatal error F960D407 in receipt of this
+
| MCU
+
| PTM
+
| Published on a fatal hardware condition, when the MCU WDT triggers, ptm throws fatal error F960D407 in receipt of this
|-
|-
| 0x20D
| 0x20D
−
| ? (Subscribed to by GSP)
+
| MCU
+
| GSP
+
| Charger plugged out.
|-
|-
| 0x20E
| 0x20E
−
| ? (Subscribed to by GSP)
+
| MCU
+
| GSP
+
| Charger plugged in.
+
|-
+
| 0x20F
+
| MCU
+
|
+
| Published by the mcu module when (bitmask & 0x8000) is true (started charging). This bitmask is obtained by reading i2c register 0x10.
+
|-
+
| 0x210
+
| MCU
+
|
+
| Published by the mcu module when (bitmask & 0x4000) is true (stopped charging). This bitmask is obtained by reading i2c register 0x10.
+
|-
+
| 0x211
+
| PTM
+
|
+
| Battery very low (5%)
+
|-
+
| 0x212
+
| PTM
+
|
+
| Battery low (10%)
|-
|-
| 0x213
| 0x213
−
| ? (Subscribed to by GSP)
+
| NS
+
| CODEC, HID, GSP, CAMERA, MIC, NDM, QTM, PTM
+
| Shell opened.
|-
|-
| 0x214
| 0x214
−
| ? (Subscribed to by GSP)
+
| NS
+
| CODEC, HID, GSP, CAMERA, MIC, NDM, QTM, PTM.
+
| Shell closed.
+
|-
+
| 0x300
+
| AC
+
| NDM, MENU
+
| Signaled after sleep mode exit and during system boot.
+
|-
+
| 0x301
+
| AC
+
| FRIENDS, NDM
+
| Signaled just before sleep mode is exited from.
|-
|-
| 0x302
| 0x302
−
| Unknown. Signaled by nwm module.
+
| NWM
+
| NDM, SOCKET, FRIENDS, AC
+
| WiFi is turning off, triggered by using the WiFi switch on O3DS models and the toggle in the N3DS HOME menu (maybe disconnecting from any connected networks?)
|-
|-
| 0x303
| 0x303
−
| Unknown. Subscribed to by CECD module.
+
| NWM
+
| CECD, NDM
+
| WiFi has turned off. (fires shortly after 0x302)
|-
|-
| 0x304
| 0x304
−
| Unknown. Subscribed to by CECD module.
+
| NWM
+
| CECD, NDM, SOCKET
+
| WiFi was turned on.
|}
|}
+
[[Category:Services]]