HIPC: Difference between revisions

No edit summary
Hthh (talk | contribs)
Fix a few things
Line 15: Line 15:
| 0 || 31-28 || Number of buf W desciptors (each: 3 words), never observed.
| 0 || 31-28 || Number of buf W desciptors (each: 3 words), never observed.
|-
|-
| 1 || 9-0 || Total word count (in u32's).
| 1 || 9-0 || Raw data size (in u32's).
|-
|-
| 1 || 13-10 || Flags for buf C descriptor.
| 1 || 13-10 || Flags for buf C descriptor.
Line 31: Line 31:
| ... || || Type W descriptors, each one 3 words.
| ... || || Type W descriptors, each one 3 words.
|-
|-
| ... || || Padding
| ... || || Raw data (including any padding).
|-
| ... || || Raw data
|-
|-
| ... || || Buf C descriptors, each one 2 words.
| ... || || Buf C descriptors, each one 2 words.
Line 49: Line 47:
|-
|-
| 0 || 8-5 || Number of handles to move
| 0 || 8-5 || Number of handles to move
|-
| ... || || 8-byte PID if enabled
|-
|-
| ... || || Handles to copy
| ... || || Handles to copy
Line 113: Line 113:


== Raw data portion ==
== Raw data portion ==
This is an array of u64's. It's always aligned to 16 so sometimes there is padding words before it.
This is an array of u32's, but individual parameters are generally stored as u64's.


{| class="wikitable" border="1"
{| class="wikitable" border="1"
! Word || Description
! Word || Description
|-
|-
| ... || Pid is written here if enabled.
| ... || Padding to align to 16
|-
| ... || Domain header padded to 16 if required
|-
| +0 || Magic ("SFCI" for requests, "SFCO" for responses) as u64
|-
|-
| +0 || Magic ("SFCI" for requests, "SFCO" for responses)
| +2 || Cmd id as u64
|-
|-
| +1 || Cmd id
| ... || Input parameters
|-
|-
| ... || Rest of raw data.
| ... || Any u16 buffer sizes packed and aligned to 2 bytes
|}
|}


Line 186: Line 190:


== Control ==
== Control ==
When type == 5 you are talking to kernel.
When type == 5 you are talking to the IPC manager.


{| class="wikitable" border="1"
{| class="wikitable" border="1"