Services: Difference between revisions
No edit summary |
|||
Line 1: | Line 1: | ||
Services are an abstraction of ports and are the commonly used way of inter-process communication outside of the kernel. While handles of regular ports are retrieved from [[SVC]](svcConnectToPort), service handles are retrieved through the port ''srv:'' ("service manager"). | Services are an abstraction of ports and are the commonly used way of inter-process communication outside of the kernel. While handles of regular ports are retrieved from [[SVC]](svcConnectToPort), service handles are retrieved through the port ''srv:'' ("service manager"). | ||
When a service is registered, [[SVC|svcCreatePort]] is used without a port-name. This means that the port is inaccessible via the port SVCs outside of sm-module. See below for getting a session handle for sending commands to services. | |||
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. | 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. | ||
Line 22: | Line 24: | ||
|- | |- | ||
| 0x00050100 | | 0x00050100 | ||
| GetServiceSessionHandle(8-byte servicename, u32 strlen, u32 flags). Flags bit0: if not set, return port-handle instead of session-handle when session-handle unavailable (max sessions/timeout?). | | GetServiceSessionHandle(8-byte servicename, u32 strlen, u32 flags). Flags bit0: if not set, return port-handle instead of session-handle(from [[SVC|svcCreateSessionToPort]]) when session-handle unavailable (max sessions/timeout?). | ||
|- | |- | ||
| 0x000600c2 | | 0x000600c2 |