Changes

420 bytes added ,  22:44, 25 January 2016
no edit summary
Line 1: Line 1:  
IPC commands are written to the [[Thread Local Storage]] at offset 0x80 and submitted using [[SVC|svcSendSyncRequest]]. If the kernel was able to dispatch the request, the server reply will be written to TLS+0x80. Often the second word of the response data is the error code (or 0 if success).
 
IPC commands are written to the [[Thread Local Storage]] at offset 0x80 and submitted using [[SVC|svcSendSyncRequest]]. If the kernel was able to dispatch the request, the server reply will be written to TLS+0x80. Often the second word of the response data is the error code (or 0 if success).
   −
Every IPC command sent to services starts with a u32 header code, and parameters, if any, are written after this header. They are decomposed into the following parts:
+
Every IPC command sent to IPC server processes starts with a u32 header code. Parameters, if any, are written following this header. There are "normal parameters", which are fixed-size words, and there are "translate parameters", which are of flexible size and each of which begins with a header. The entire command has the following structure:
 +
{| class="wikitable" border="1"
 +
|-
 +
!  Word
 +
!  Size
 +
!  Description
 +
|-
 +
| 0
 +
| 1
 +
| Header code
 +
|-
 +
| 1
 +
| x
 +
| Normal parameters
 +
|-
 +
| x
 +
| y
 +
| Translate parameters
 +
|}
 +
 
 +
The IPC command header has the following structure:
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 8: Line 28:  
|-
 
|-
 
| 0-5
 
| 0-5
| Number of translate parameters (=y)
+
| Total size in words of the translate parameters (=y). Note that this is in general different from the number of translate parameters
 
|-
 
|-
 
| 6-11
 
| 6-11
Line 20: Line 40:  
|}
 
|}
   −
The entire command has the following structure:
+
Each translate parameter starts with a translation descriptor:
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Word
+
Bits
!  Size
   
!  Description
 
!  Description
 
|-
 
|-
| 0
+
| 1-3
| 1
+
| type
| Header code
  −
|-
  −
| 1
  −
| x
  −
| Normal parameters
  −
|-
  −
| x
  −
| y
  −
| Translate parameters
   
|}
 
|}
  
549

edits