The majority of 3DS inter-process communication is implemented as services.
The majority of 3DS inter-process communication is implemented as services.
+
+
== Shared Memory ==
+
+
Communication through port/service requests and replies may incur a big bottleneck when exchanging large amounts of data because the kernel needs to transfer the data between the two involved processes. There is hence a complementary feature to share the same physical memory between two processes. For this purpose, one process needs to create a block of shared memory using svcCreateMemoryBlock such that the other process can map it into its own virtual memory address space using MapMemoryBlock. The memory block handle for the latter is provided using a regular IPC command.
+
+
Many services use shared memory as a secondary command interface (e.g. [[GSP_Shared_Memory|GSP]]), the processing of which is triggered through an IPC request (cf. [[GSPGPU:TriggerCmdReqQueue]]).