= HelenOS as a Genode platform = This document is inteded to help understand the Portation of the Genode Operating System Framework to HelenOS by pointing out major differences in the design, implementation and used terms of both platforms and describing how these differences has been solved. \\ Corresponding Ticket: #419 \\ Code base: https://github.com/kurbel/genode/tree/base-spartan # \\ # TODO: brief introduction to Genode in general \\ # == General Tasklayout == === Initial Tasks === Task Creation == IPC == === Design || ||= HelenOS offers =||= Genode requires =|| ||= IPC End Points =|| task to task communication\\ * fibrils used as userspace threads\\ * one answerbox per task || thread to thread communication\\ * uses kernel primitives for threading || ||= IPC Routing =|| By global naming service (first task to be loaded in userspace)\\ * every new created task has an initial ipc connection to the naming service\\ * namimg service has to asked for at least first connection\\ * calls are being forwarded at will || parent of each single task / thread identified by a unique parent capability\\ * new created tasks have a connection to its parent\\ * parent has to be asked for every connection\\ * call is routed through the task"tree" until destination is reached || ||= Connection Identification =|| by phone handle (simple int value) || by Capability, consisting of a platform specific argument and a global or local id for identifiaction || ||= IPC Messages =|| different lenghts possible\\ * short messages using max 6 unsigned long arguments in a short call submitted directly\\ * longer messages submitted via copying memory from one task to another\\ * longer messages submitted via shared memory\\ * requesting or sharing a connection requires an extra ipc call for every single phone handle || variable\\ * messages have user defined maximum length \\ * capabilities can be send within each message (more than one is possible) || === Implementation