About this document
This document is split into two parts. Whereas the first part contains the textual description of the architectural and practical foundations, the second part serves as a reference of the framework's programming interface. This allows the first part to stay largely clear from implementation details. Cross-references between both parts are used to connect the conceptual level with the implementation level.
Chapter Getting started provides engineering-minded readers with a practical jump start to explore the code and experiment with it. These practical steps are good to get a first impression and will hopefully provide the motivation to engage with the core part of the book, which are the Chapters Architecture and Components.
Chapter Architecture introduces Genode's high-level architecture by presenting the concept of capability-based security, the resource-trading mechanism, the root of the component tree, and the ways how components can collaborate without mutually trusting each other. Chapter Components narrows the view on different types of components, namely device drivers, protocol stacks, resource multiplexers, runtime environments, and applications. The remaining part of the chapter focuses on the composition of components.
Chapter Development substantiates Chapter Getting started with all information needed to develop meaningful components. It covers the integration of 3rd-party software, the build system, the tool kit for automated testing, and the Git work flow of the regular Genode developers.
Chapter System configuration addresses the system integration. After presenting Genode's holistic configuration concept, it details the usage of the init component, which bootstraps the static part of each Genode system.
Chapter Under the hood closes the first part with a look behind the scenes. It provides the details and the rationales behind technical decisions, explains the startup procedure of components, shows how Genode's concepts are mapped to kernel mechanisms, and documents known limitations.
The second part of the document gives an overview of the framework's C++ programming interface. The content is partially derived from the actual source code and supplemented with additional background information.
Acknowledgements and feedback
This document greatly benefited from the feedback of the community at the Genode mailing list, the wonderful team at Genode Labs, the thorough review by Adrian-Ken Rueegsegger and Reto Buerki, and several anonymous reviewers. Thanks to everyone who contributed to the effort, be it in the form of reviews, comments, moral support, or through projects commissioned to Genode Labs.
That said, feedback from you as the reader of the document is always welcome. If you identify points you would like to see improved or if you spot grammatical errors, please do not hesitate to contact the author by writing to norman.feske@genode-labs.com or to post your feedback to the mailing list https://genode.org/community/mailing-lists.