HIPC: Difference between revisions
No edit summary |
|||
Line 1: | Line 1: | ||
HIPC (Horizon Inter-Process Communication) is a custom IPC implementation tailored for the Horizon OS. | HIPC (Horizon Inter-Process Communication) is a custom IPC implementation tailored for the Horizon OS. | ||
= | = HIPC = | ||
This is a buffer located in the [[Thread Local Region]]. | This is a buffer located in the [[Thread Local Region]]. | ||
Line 359: | Line 359: | ||
Depending on the protocol, either [[#CMIF|CMIF]] or [[#TIPC|TIPC]] data is used here. | Depending on the protocol, either [[#CMIF|CMIF]] or [[#TIPC|TIPC]] data is used here. | ||
= CMIF | = CMIF = | ||
== Raw Data == | == Raw Data == | ||
[[File:Ipc msg buffer type a example.png|thumb|An example of an IPC message with a type 0xA (OutPointer) buffer in it. Red is headers/descriptors, yellow is padding, and blue is data/buffer lengths. Note that the size of the u16 array for type 0xA lengths is padded to fill up a whole word.]] | [[File:Ipc msg buffer type a example.png|thumb|An example of an IPC message with a type 0xA (OutPointer) buffer in it. Red is headers/descriptors, yellow is padding, and blue is data/buffer lengths. Note that the size of the u16 array for type 0xA lengths is padded to fill up a whole word.]] | ||
Line 598: | Line 598: | ||
| HipcMove | | HipcMove | ||
|} | |} | ||
= TIPC = | |||
TIPC (Tiny IPC) is a simpler protocol than CMIF. It has no concept of domains, so it cannot support multiple objects per session. It is only used in the Service Manager. | |||
== MessageType == | |||
In TIPC, the request ID is stored in the lowest 16 bits of [[#Header0Tag|Header0Tag]]. | |||
== RawData == | |||
In TIPC, [[#RawData|RawData]] field directly contains the payload. | |||
= Server = | = Server = |