[][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 MsgPackedHdr::enable_handle_descriptor is true.

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.