IPC: Difference between revisions
Created page with "Every RPC command sent to services starts with a u32 header code: {| class="wikitable" border="1" |- ! Bits ! Description |- | 0-5 | Number of translate parameters (=x) |- | 6..." |
No edit summary |
||
Line 40: | Line 40: | ||
Translate parameters are modified/translated transparently by the kernel. They are used to transfer handles/buffers between the different processes. | Translate parameters are modified/translated transparently by the kernel. They are used to transfer handles/buffers between the different processes. | ||
The type of parameter is described by the bits 1-3 in the translation descriptor. Parameter types accepted by the kernel are: 0, 1, (2?), 5, 6, 7. | |||
The number of parameters covered by a descriptor is type-dependent: | |||
Type 0: | |||
length = (desc >> 26) + 1 | |||
Type 1, (2?), 5, 6, 7: | |||
length = 1 | |||
Type 0 does the following: | |||
if desc & 0x30 == 0x20: | |||
write process id to value | |||
else: | |||
translate handle | |||
if desc & 0x30 == 0x10: | |||
close handle for caller | |||
-- | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" |