Fork us on GitHub Follow us on Facebook Follow us on Twitter

Version 1 (modified by Tobias Börtitz, 7 years ago) (diff)

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