[−][src]Module sunrise_libuser::ipc
Core IPC Routines
Horizon/OS is a microkernel. And what would be a microkernel without an appropriately overengineered IPC layer? The IPC layer of Horizon/NX is split in two parts: Cmif and Hipc. Cmif is the low-level IPC layer implemented by the kernel. Its job is to move handles from the sender to the receiver, move buffers using the appropriate method, and copy the data section over.
The Hipc layer is responsible for the format of the Raw data section. It expects the SFCI/SFCO header, the cmdid at a certain location, and handles domains.
In libuser, we don't make a proper distinction between Cmif and Hipc. Both are implemented in the same layer, which is backed by the Message structure.
Modules
server | IPC Server primitives |
Structs
HandleDescriptorHeader | Part of an HIPC command. Sent only when
|
IPCBuffer | An IPC Buffer represents a section of memory to send to the other side of the pipe. It is usually used for sending big chunks of data that would not send in the comparatively small argument area (which is usually around 200 bytes). |
Message | A generic IPC message, representing either an IPC Request or an IPC Response. |
MsgPackedHdr | Represenens the header of an HIPC command. |
Enums
IPCBufferType | Type of an IPC Buffer. Depending on the type, the kernel will either map it in the remote process, or memcpy its content. |
MessageTy | Type of an IPC message. |
Traits
SizedIPCBuffer | Util used for IPC buffer sizing. |
Functions
find_ty_cmdid | Quickly find the type and cmdid of an IPC message for the server dispatcher. |