| | 1 | = HelenOS as a Genode platform = |
| | 2 | |
| | 3 | This document is inteded to help understand the Portation of the Genode |
| | 4 | Operating System Framework to HelenOS by pointing out major differences |
| | 5 | in the design, implementation and used terms of both platforms and describing |
| | 6 | how these differences has been solved. \\ |
| | 7 | Corresponding Ticket: #419 \\ |
| | 8 | Code base: https://github.com/kurbel/genode/tree/base-spartan |
| | 9 | |
| | 10 | # \\ |
| | 11 | # TODO: brief introduction to Genode in general \\ |
| | 12 | # |
| | 13 | |
| | 14 | |
| | 15 | == General Tasklayout == |
| | 16 | |
| | 17 | === Initial Tasks |
| | 18 | |
| | 19 | === Task Creation |
| | 20 | |
| | 21 | |
| | 22 | == IPC == |
| | 23 | |
| | 24 | === Design |
| | 25 | |
| | 26 | || ||= HelenOS offers =||= Genode requires =|| |
| | 27 | ||= 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 || |
| | 28 | ||= 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 || |
| | 29 | ||= Connection Identification =|| by phone handle (simple int value) || by Capability, consisting of a platform specific argument and a global or local id for identifiaction || |
| | 30 | ||= 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) || |
| | 31 | |
| | 32 | === Implementation |