HIPC: Difference between revisions

Ootulp (talk | contribs)
Ootulp (talk | contribs)
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.


= Structure =
= 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 Structure =
= 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 =