2011-12-22 15:19:25 +00:00
|
|
|
|
|
|
|
|
|
|
|
==========================
|
|
|
|
Genode components overview
|
|
|
|
==========================
|
|
|
|
|
|
|
|
Norman Feske
|
|
|
|
|
|
|
|
|
|
|
|
Abstract
|
|
|
|
########
|
|
|
|
|
|
|
|
Genode comes with a growing number of components apparently scattered across
|
|
|
|
various repositories. This document provides an overview of these components
|
|
|
|
and outlines the systematics behind them.
|
|
|
|
|
2020-05-25 10:06:41 +00:00
|
|
|
The scope of this document is limited to the Genode main repository maintained
|
|
|
|
by Genode Labs. Many additional components and device drivers can be found in
|
|
|
|
the community-maintained
|
|
|
|
[https://github.com/genodelabs/genode-world/ - Genode-World] repository.
|
|
|
|
|
2011-12-22 15:19:25 +00:00
|
|
|
|
|
|
|
Categorization of components
|
|
|
|
############################
|
|
|
|
|
|
|
|
Genode components usually fall into one of four categories, namely device
|
|
|
|
drivers, resource multiplexers, protocol stacks, and applications. Each
|
|
|
|
of them is briefly characterized as follows:
|
|
|
|
|
|
|
|
:Device drivers: translate hardware resources into device-independent
|
|
|
|
session interfaces. Naturally, a device driver is specific to a
|
|
|
|
particular hardware platform. The hardware resources are accessed
|
|
|
|
via core's IO_MEM, IO_PORT, and IRQ services. The functionality of
|
2020-08-24 13:59:22 +00:00
|
|
|
the driver is made available to other system components via
|
2011-12-22 15:19:25 +00:00
|
|
|
one of Genode's device-independent session interfaces, which are
|
2020-08-24 13:59:22 +00:00
|
|
|
'platform_session', 'capture_session', 'event_session', 'block_session',
|
2011-12-22 15:19:25 +00:00
|
|
|
'audio_out_session', 'log_session', 'nic_session', and 'timer_session'
|
2020-11-25 13:18:57 +00:00
|
|
|
(see _os/include/_ for the interface definitions). Those interfaces are
|
2011-12-22 15:19:25 +00:00
|
|
|
uniform across hardware platforms and kernel base platforms. Usually,
|
|
|
|
each device driver can accommodate only one client at a time.
|
|
|
|
|
|
|
|
:Resource multiplexers: provide mechanisms to multiplex device resources
|
|
|
|
to multiple clients. A typical resource multiplexer requests one
|
|
|
|
of Genode's device-independent session interface (usually connected
|
|
|
|
to a device driver) and, in turn, announces a service of the same kind.
|
|
|
|
However, in contrast to a device driver, a resource multiplexer is able
|
|
|
|
to serve more than one client at the same time.
|
|
|
|
|
|
|
|
:Protocol stacks: translate low-level interfaces to higher-level
|
|
|
|
interfaces (or sometimes vice versa). Typically, a protocol stack comes
|
|
|
|
in the form of a library, which uses a device-independent session
|
|
|
|
interface as back end and provides a high-level library interface as
|
|
|
|
front end. However, protocol stacks also exist in the form of
|
|
|
|
distinct components that implement translations between different
|
|
|
|
session interfaces.
|
|
|
|
|
|
|
|
:Applications: implement functionality using APIs as provided by
|
|
|
|
protocol stacks.
|
|
|
|
|
|
|
|
:Runtime environments: enable existing 3rd-party software to be executed
|
|
|
|
as a Genode sub systems.
|
|
|
|
|
|
|
|
|
|
|
|
Device drivers
|
|
|
|
##############
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
Device drivers usually reside in the _src/drivers/_ subdirectory of source-code
|
2011-12-22 15:19:25 +00:00
|
|
|
repositories. The most predominant repositories hosting device drivers are
|
2015-04-29 13:27:43 +00:00
|
|
|
'os', 'dde_ipxe', 'dde_linux'.
|
2011-12-22 15:19:25 +00:00
|
|
|
|
|
|
|
|
|
|
|
Platform devices
|
|
|
|
================
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/drivers/platform/_: Platform drivers for various platforms.
|
2015-08-28 13:33:41 +00:00
|
|
|
On x86, the platform driver uses the PCI controller as found on x86 PC
|
|
|
|
hardware. A client can probe for a particular device and request information
|
|
|
|
about physical device resources (using the 'platform_device' interface). I/O
|
|
|
|
resources for MMIO regions, I/O ports, and interrupts can be requested by the
|
|
|
|
provided device abstraction.
|
2015-05-26 08:23:50 +00:00
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/drivers/acpi/_:
|
2015-05-26 08:23:50 +00:00
|
|
|
On x86 platforms that use the APIC (namely Fiasco.OC, NOVA, and hw_x86_64)
|
2015-08-28 13:33:41 +00:00
|
|
|
this simple ACPI parser traverses the ACPI tables and reports device-resource
|
|
|
|
information (e.g., interrupt lines of PCI devices).
|
2011-12-22 15:19:25 +00:00
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/app/smbios_decoder/_:
|
2020-05-25 10:06:41 +00:00
|
|
|
A component that parses SMBIOS information on x86 platforms and makes the
|
|
|
|
result available as a report.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_libports/src/app/acpica/_:
|
2016-05-26 13:49:03 +00:00
|
|
|
In addition to our ACPI base driver, the acpica component uses the
|
|
|
|
ACPICA library to provide access to dynamic functions like battery
|
|
|
|
states, events (e.g., notebook lid close and power buttons), as well
|
|
|
|
as reset and power off. The componenten reports ACPI events and
|
|
|
|
states as reports and itself responds to system state changes of
|
|
|
|
certain configuration ROMs.
|
|
|
|
|
2011-12-22 15:19:25 +00:00
|
|
|
|
|
|
|
UART devices
|
|
|
|
============
|
|
|
|
|
2012-11-28 19:49:23 +00:00
|
|
|
The UART device drivers implement the UART-session interface.
|
2011-12-22 15:19:25 +00:00
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/drivers/uart/spec/pbxa9/_:
|
2011-12-22 15:19:25 +00:00
|
|
|
Driver for the PL011 UART as found on many ARM-based platforms.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/drivers/uart/spec/x86/_:
|
2011-12-22 15:19:25 +00:00
|
|
|
Driver for the i8250 UART as found on PC hardware.
|
|
|
|
|
|
|
|
|
|
|
|
Framebuffer and input drivers
|
|
|
|
=============================
|
|
|
|
|
2020-08-24 13:59:22 +00:00
|
|
|
Framebuffer and input drivers are implemented as clients of the
|
|
|
|
capture-session and event-session interfaces respectively.
|
2011-12-22 15:19:25 +00:00
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/drivers/ps2/x86/_:
|
2011-12-22 15:19:25 +00:00
|
|
|
Driver for the 'i8042' PS/2 controller as found in x86 PCs. It supports both
|
|
|
|
mouse (including ImPS/2, ExPS/2) and keyboard.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/drivers/ps2/pl050/_:
|
2011-12-22 15:19:25 +00:00
|
|
|
Driver for the PL050 PS/2 controller as found on ARM platforms such as
|
|
|
|
VersatilePB. The physical base address used by the driver is obtained at
|
2020-11-25 13:18:57 +00:00
|
|
|
compile time from a header file called _pl050_defs.h_. The version of the
|
|
|
|
VersatilePB platform can be found at _os/include/platform/vpb926/_ and
|
2011-12-22 15:19:25 +00:00
|
|
|
is made available to the driver via the SPECS machinery of the Genode build
|
|
|
|
system.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_libports/src/drivers/framebuffer/vesa/_:
|
2011-12-22 15:19:25 +00:00
|
|
|
Driver using VESA mode setting on x86 PCs. For more information, please refer
|
|
|
|
to the README file in the driver directory.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_libports/src/drivers/framebuffer/boot/_:
|
2017-08-29 09:43:39 +00:00
|
|
|
Driver for boot-time initialized framebuffers (e.g., UEFI GOP)
|
|
|
|
discovered from the 'platform_info' ROM
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/drivers/framebuffer/pl11x/_:
|
2011-12-22 15:19:25 +00:00
|
|
|
Driver for the PL110/PL111 LCD display.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/drivers/framebuffer/imx53/_:
|
2013-11-27 18:06:04 +00:00
|
|
|
Driver for LCD output on i.MX53 SoCs.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/drivers/framebuffer/rpi/_:
|
2013-11-27 18:06:04 +00:00
|
|
|
Driver for the HDMI output of the Raspberry Pi.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/drivers/framebuffer/sdl/_:
|
2011-12-22 15:19:25 +00:00
|
|
|
Serves as both framebuffer and input driver on Linux using libSDL. This
|
|
|
|
driver is only usable on the Linux base platform.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/drivers/gpu/intel/_:
|
2020-05-25 10:06:41 +00:00
|
|
|
An experimental Intel Graphics GPU multiplexer for Broadwell and newer.
|
2017-08-29 09:43:39 +00:00
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_dde_linux/src/drivers/framebuffer/intel/_:
|
2015-11-30 10:37:50 +00:00
|
|
|
Framebuffer driver for Intel i915 compatible graphic cards based on
|
|
|
|
the Linux Intel KMS driver.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_dde_linux/src/drivers/usb_host/_:
|
|
|
|
USB host-controller driver that provides an USB session interface to
|
|
|
|
USB drivers.
|
2011-12-22 15:19:25 +00:00
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_dde_linux/src/drivers/usb_hid/_:
|
2020-05-25 10:06:41 +00:00
|
|
|
USB Human Interface Device driver using the USB session interface.
|
|
|
|
|
2011-12-22 15:19:25 +00:00
|
|
|
|
|
|
|
Timer drivers
|
|
|
|
=============
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
The timer driver located at _base/src/timer/_ implements the timer-session
|
2015-11-30 10:37:50 +00:00
|
|
|
interface. Technically, it is both a device driver (accessing a timer
|
2013-02-27 14:00:48 +00:00
|
|
|
device) and a resource multiplexer (supporting multiple timer-session clients
|
2015-11-30 10:37:50 +00:00
|
|
|
at the same time). Depending on the base platform, the implementation uses
|
2013-02-27 14:00:48 +00:00
|
|
|
different time sources. Time sources are either hardware timers, a time source
|
|
|
|
provided by the kernel, or a pseudo time source (busy):
|
|
|
|
|
2016-05-26 13:49:03 +00:00
|
|
|
:'nova': NOVA kernel semaphores
|
|
|
|
:'okl4_x86': Programmable Interval Timer (PIT) device
|
|
|
|
:'foc': IPC timeout
|
|
|
|
:'fiasco': IPC timeout
|
2017-08-29 09:43:39 +00:00
|
|
|
:'pistachio': Programmable Interval Timer (PIT) device
|
2016-05-26 13:49:03 +00:00
|
|
|
:'linux': nanosleep()
|
|
|
|
:'hw': kernel timer
|
2017-08-29 09:43:39 +00:00
|
|
|
:'sel4': PIT on x86, EPIT on Wandboard
|
2011-12-22 15:19:25 +00:00
|
|
|
|
|
|
|
|
2015-08-28 13:33:41 +00:00
|
|
|
Audio drivers
|
|
|
|
=============
|
2011-12-22 15:19:25 +00:00
|
|
|
|
2015-08-28 13:33:41 +00:00
|
|
|
Audio drivers implement the Audio_out session interface defined at
|
2020-11-25 13:18:57 +00:00
|
|
|
_os/include/audio_out_session/_ for playback and optionally the audio_in
|
2015-08-28 13:33:41 +00:00
|
|
|
interface for recording.
|
2011-12-22 15:19:25 +00:00
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/drivers/audio/spec/linux/_:
|
2015-08-28 13:33:41 +00:00
|
|
|
Uses ALSA as back-end on the Linux base platform and supports only playback.
|
2011-12-22 15:19:25 +00:00
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_dde_bsd/src/drivers/audio/_:
|
2015-05-26 08:23:50 +00:00
|
|
|
Sound drivers ported from OpenBSD. Currently, the repository
|
|
|
|
includes support for Intel HD Audio as well as for Ensoniq AudioPCI
|
|
|
|
(ES1370) compatible sound cards.
|
2012-11-28 19:49:23 +00:00
|
|
|
|
2011-12-22 15:19:25 +00:00
|
|
|
|
|
|
|
Block drivers
|
|
|
|
=============
|
|
|
|
|
|
|
|
All block drivers implement the block-session interface defined at
|
2020-11-25 13:18:57 +00:00
|
|
|
_os/include/block_session/_.
|
2011-12-22 15:19:25 +00:00
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/drivers/sd_card/spec/pl180/_:
|
2011-12-22 15:19:25 +00:00
|
|
|
Driver for SD-cards connected via the PL180 device as found on the PBX-A9
|
|
|
|
platform.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/drivers/sd_card/spec/imx53/_:
|
2015-05-26 08:23:50 +00:00
|
|
|
Driver for SD-cards connected to the Freescale i.MX53 platform like the
|
|
|
|
Quick Start Board or the USB armory device.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/drivers/sd_card/spec/rpi/_:
|
2015-05-26 08:23:50 +00:00
|
|
|
Driver for SD-cards connected to the Raspberry Pi.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/drivers/ahci/_:
|
2015-05-26 08:23:50 +00:00
|
|
|
Driver for SATA disks and CD-ROMs on x86 PCs.
|
2011-12-22 15:19:25 +00:00
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/drivers/nvme/_:
|
2020-05-25 10:06:41 +00:00
|
|
|
Driver for NVMe block devices on x86 PCs.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/drivers/usb_block/_:
|
2021-06-04 09:51:05 +00:00
|
|
|
USB Mass Storage Bulk-Only driver using the USB session interface and provides
|
|
|
|
a block-session interface.
|
2016-02-25 09:39:26 +00:00
|
|
|
|
2011-12-22 15:19:25 +00:00
|
|
|
|
|
|
|
Network interface drivers
|
|
|
|
=========================
|
|
|
|
|
|
|
|
All network interface drivers implement the NIC session interface
|
2020-11-25 13:18:57 +00:00
|
|
|
defined at _os/include/nic_session/_.
|
2011-12-22 15:19:25 +00:00
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/drivers/nic/spec/linux/_:
|
2011-12-22 15:19:25 +00:00
|
|
|
Driver that uses a Linux tap device as back end. It is only useful on the
|
|
|
|
Linux base platform.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/drivers/nic/spec/lan9118/_:
|
2011-12-22 15:19:25 +00:00
|
|
|
Native device driver for the LAN9118 network adaptor as featured on the
|
|
|
|
PBX-A9 platform.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_dde_ipxe/src/drivers/nic/_:
|
2011-12-22 15:19:25 +00:00
|
|
|
Device drivers ported from the iPXE project. Supported devices are Intel
|
|
|
|
E1000 and pcnet32.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_dde_linux/src/drivers/wifi/_:
|
2015-05-26 08:23:50 +00:00
|
|
|
The wifi_drv component is a port of the Linux mac802.11 stack, including the
|
|
|
|
iwlwifi driver. It enables the use of Intel Wireless 6xxx and 7xxx cards.
|
|
|
|
|
2021-06-04 09:51:05 +00:00
|
|
|
:_dde_linux/src/drivers/usb_net/_:
|
|
|
|
USB network driver using the USB session interface.
|
2012-08-22 18:13:12 +00:00
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_dde_linux/src/drivers/nic/fec/_:
|
2018-02-28 11:59:58 +00:00
|
|
|
Driver for ethernet NICs of the i.MX SoC family.
|
|
|
|
|
2011-12-22 15:19:25 +00:00
|
|
|
|
2012-11-28 19:49:23 +00:00
|
|
|
General-purpose I/O drivers
|
|
|
|
===========================
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/drivers/gpio/spec/imx53/_:
|
2013-11-27 18:06:04 +00:00
|
|
|
Driver for accessing the GPIO pins of i.MX53 platforms.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/drivers/gpio/spec/rpi/_:
|
2015-08-28 13:33:41 +00:00
|
|
|
Driver for accessing the GPIO pins of Raspberry Pi platforms.
|
|
|
|
|
2012-11-28 19:49:23 +00:00
|
|
|
|
2011-12-22 15:19:25 +00:00
|
|
|
Resource multiplexers
|
|
|
|
#####################
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
By convention, resource multiplexers are located at the _src/server/_
|
2011-12-22 15:19:25 +00:00
|
|
|
subdirectory of a source repository.
|
|
|
|
|
2020-08-24 13:59:22 +00:00
|
|
|
:Framebuffer and input: Framebuffer and input devices can be multiplexed using
|
|
|
|
the Nitpicker GUI server, which allows multiple clients to create and manage
|
|
|
|
rectangular areas on screen. Nitpicker serves as broker between input
|
|
|
|
devices, output devices, and graphical applications. It provides an event
|
|
|
|
service for input drivers, a capture service for output drivers, and a GUI
|
|
|
|
service for the applications. Each GUI session contains a virtual
|
|
|
|
framebuffer and a virtual input interface. Nitpicker (including a README
|
2020-11-25 13:18:57 +00:00
|
|
|
file) is located at _os/src/server/nitpicker/_.
|
2011-12-22 15:19:25 +00:00
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:Audio output: The audio mixer located at _os/src/server/mixer/_ enables
|
2011-12-22 15:19:25 +00:00
|
|
|
multiple clients to use the audio-out interface. The mixing is done by simply
|
|
|
|
adding and clamping the signals of all present clients.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:Networking: The NIC bridge located at _os/src/server/nic_bridge/_ multiplexes
|
2011-12-22 15:19:25 +00:00
|
|
|
one NIC session to multiple virtual NIC sessions using a proxy-ARP
|
|
|
|
implementation. Each client has to obtain a dedicated IP address visible to
|
|
|
|
the physical network. DHCP requests originating from the virtual NIC sessions
|
|
|
|
are delegated to the physical network.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
The NIC router located at _os/src/server/nic_router/_ multiplexes one NIC
|
2020-05-25 10:06:41 +00:00
|
|
|
session to multiple virtual NIC sessions by applying network address
|
|
|
|
translation (NAT).
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:Block: The block-device partition server at _os/src/server/part_block/_ reads
|
2011-12-22 15:19:25 +00:00
|
|
|
the partition table of a block session and exports each partition found as
|
|
|
|
separate block session. For using this server, please refer to the run
|
2020-11-25 13:18:57 +00:00
|
|
|
script at _os/run/part_block.run_.
|
2011-12-22 15:19:25 +00:00
|
|
|
|
2020-05-25 10:06:41 +00:00
|
|
|
:File system: The VFS file-system server allows multiple clients to
|
|
|
|
concurrently access the same virtual file system. It is located at
|
2020-11-25 13:18:57 +00:00
|
|
|
_os/src/server/vfs/_. The VFS can be assembled out of several builtin
|
2020-05-25 10:06:41 +00:00
|
|
|
file-system types (like a RAM file system, or pseudo file systems for
|
|
|
|
various Genode session interfaces) as well as external plugins such as rump
|
|
|
|
(mounting file systems supported by the NetBSD kernel).
|
2012-08-22 18:13:12 +00:00
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:Terminal: The terminal_mux service located at _gems/src/server/terminal_mux/_
|
2013-02-27 14:00:48 +00:00
|
|
|
is able to provide multiple terminal sessions over one terminal-client
|
|
|
|
session. The user can switch between the different sessions using a keyboard
|
|
|
|
shortcut, which brings up an ncurses-based menu.
|
|
|
|
|
2011-12-22 15:19:25 +00:00
|
|
|
|
|
|
|
Protocol stacks
|
|
|
|
###############
|
|
|
|
|
|
|
|
Protocol stacks come either in the form of separate components that translate
|
|
|
|
one session interface to another, or in the form of libraries.
|
|
|
|
|
2020-05-25 10:06:41 +00:00
|
|
|
Separate components
|
|
|
|
===================
|
2011-12-22 15:19:25 +00:00
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/server/gui_fb/_:
|
2020-08-24 13:59:22 +00:00
|
|
|
Translates a GUI session to a pair of framebuffer and input sessions.
|
2020-06-16 11:48:09 +00:00
|
|
|
Each 'gui_fb' instance is visible as a rectangular area on screen presenting
|
2011-12-22 15:19:25 +00:00
|
|
|
a virtual frame buffer. The area is statically positioned. For more
|
2020-11-25 13:18:57 +00:00
|
|
|
information, please refer to _os/src/server/gui_fb/README_.
|
2011-12-22 15:19:25 +00:00
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_gems/src/server/wm/_:
|
2020-08-24 13:59:22 +00:00
|
|
|
Window manager that implements the GUI session interface but manages
|
2014-08-27 13:48:54 +00:00
|
|
|
each client view as a separate window. The window decorations are provided
|
2020-11-25 13:18:57 +00:00
|
|
|
by a so-called decorator (e.g., _gems/src/app/decorator/_). The behaviour
|
2014-08-27 13:48:54 +00:00
|
|
|
is defined by a so-called window layouter such as the floating window
|
2020-11-25 13:18:57 +00:00
|
|
|
layouter located at _gems/src/app/floating_window_layouter/_.
|
2014-08-27 13:48:54 +00:00
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_demo/src/server/liquid_framebuffer/_:
|
2020-06-16 11:48:09 +00:00
|
|
|
Implements the same translation as 'gui_fb' but by presenting an interactive
|
2011-12-22 15:19:25 +00:00
|
|
|
window rather than a statically positioned screen area.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/server/tar_rom/_:
|
2011-12-22 15:19:25 +00:00
|
|
|
Provides each file contained in a tar file obtained via Genode's ROM session
|
|
|
|
as separate ROM session.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/server/lx_fs/_:
|
2013-11-27 18:06:04 +00:00
|
|
|
A file system server that makes the file system of a Linux base platform
|
|
|
|
available to Genode.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/server/vfs_block/_:
|
|
|
|
Provides the content of a file obtained from a VFS as a block session,
|
|
|
|
similar to the loop-mount mechanism on Linux
|
2014-02-27 14:59:18 +00:00
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/server/terminal_log/_:
|
2012-05-29 15:44:04 +00:00
|
|
|
Adapter for forwarding LOG messages to a terminal session.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/server/log_terminal/_:
|
2013-11-12 16:49:11 +00:00
|
|
|
Adapter for forwarding terminal output to a LOG session.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_demo/src/server/nitlog/_:
|
2020-08-24 13:59:22 +00:00
|
|
|
Provides a LOG session, printing log output on screen via a GUI session.
|
2011-12-22 15:19:25 +00:00
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/app/rom_logger/_:
|
2015-11-30 10:37:50 +00:00
|
|
|
The rom_logger component requests a ROM session and writes the
|
|
|
|
content of the ROM dataspace to the LOG.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/server/rom_filter/_:
|
2015-11-30 10:37:50 +00:00
|
|
|
The ROM filter provides a ROM module that depends on the content of
|
|
|
|
other ROM modules steered by the filter configuration, e.g., dynamic
|
|
|
|
switching between configuration variants dependent on the state of
|
|
|
|
the system.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_gems/src/server/file_terminal/_:
|
2013-11-27 18:06:04 +00:00
|
|
|
Provides terminal sessions that target files on a file system.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_gems/src/server/terminal/_:
|
2012-05-29 15:44:04 +00:00
|
|
|
Provides a terminal session via a graphical terminal using a framebuffer
|
|
|
|
session and an input session.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_gems/src/server/tcp_terminal/_:
|
2012-05-29 15:44:04 +00:00
|
|
|
Provides one or multiple terminal sessions over TCP connections.
|
2020-11-25 13:18:57 +00:00
|
|
|
For further information, refer to _gems/src/server/tcp_terminal/README_.
|
2012-05-29 15:44:04 +00:00
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/server/terminal_crosslink/_:
|
2012-08-22 18:13:12 +00:00
|
|
|
The terminal crosslink service allows to terminal clients to talk to each
|
|
|
|
other.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/server/fs_rom/_:
|
2013-02-27 14:00:48 +00:00
|
|
|
A ROM service that translates the 'File_system' session interface to the
|
|
|
|
'ROM' session' interface. Each request for a ROM file is handled by looking
|
|
|
|
up an equally named file on the file system.
|
2020-11-25 13:18:57 +00:00
|
|
|
Please refer to _os/src/server/fs_rom/_ for more information.
|
2013-02-27 14:00:48 +00:00
|
|
|
|
2020-05-25 10:06:41 +00:00
|
|
|
For use cases where ROMs are known to be static, the
|
2020-11-25 13:18:57 +00:00
|
|
|
_os/src/server/cached_fs_rom/_ can be considered as a faster alternative to
|
2020-05-25 10:06:41 +00:00
|
|
|
the regular 'fs_rom' server. Note that 'cached_fs_rom' is not supported
|
|
|
|
in base-linux though.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/server/chroot/_:
|
2020-05-25 10:06:41 +00:00
|
|
|
An intermediate file-system server that makes a sub directory of a file
|
|
|
|
system available as the root of a file system handed out to its client.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/server/dynamic_rom/_:
|
2014-01-10 21:04:56 +00:00
|
|
|
A simple ROM service that provides ROM modules that change in time according
|
|
|
|
to a configured timeline.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/server/report_rom/_:
|
2014-01-11 23:29:17 +00:00
|
|
|
A service that implements both the report session interface and the ROM
|
|
|
|
session interface. It reflects incoming reports as ROM modules.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/server/fs_report/_:
|
2017-08-29 09:43:39 +00:00
|
|
|
Report server that writes reports to file-systems
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/server/clipboard/_:
|
2015-11-30 10:37:50 +00:00
|
|
|
This component is both a report service and a ROM service. The
|
|
|
|
clients of the report service can issue new clipboard content, which
|
|
|
|
is then propagated to the clients of the ROM service according to a
|
|
|
|
configurable information-flow policy.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/server/event_filter/_:
|
2020-04-22 14:15:56 +00:00
|
|
|
A component that transforms and merges input events from multiple sources
|
2020-08-24 13:59:22 +00:00
|
|
|
into a single event stream.
|
2014-11-27 18:42:24 +00:00
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_libports/src/app/acpi_event/_:
|
2016-08-25 12:02:18 +00:00
|
|
|
A component that transforms ACPI events into Genode input events.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_gems/src/server/gui_fader/_:
|
2020-08-24 13:59:22 +00:00
|
|
|
A wrapper for nitpicker's GUI session interface that applies alpha-blending
|
|
|
|
to the of views a GUI client.
|
2014-11-27 18:42:24 +00:00
|
|
|
|
2021-08-30 12:04:57 +00:00
|
|
|
:_os/src/server/black_hole/_:
|
|
|
|
Mockup implementation of Genode session interfaces.
|
|
|
|
|
2011-12-22 15:19:25 +00:00
|
|
|
|
2020-05-25 10:06:41 +00:00
|
|
|
VFS plugins
|
|
|
|
===========
|
2012-05-29 15:44:04 +00:00
|
|
|
|
2020-05-25 10:06:41 +00:00
|
|
|
VFS plugins are file-system drivers in the form of shared libraries that
|
|
|
|
implement the VFS-plugin interface. They can be combined with any application
|
|
|
|
based on Genode's C runtime, with the VFS server, and with non-POSIX
|
|
|
|
components that use the Genode's VFS library directly.
|
2013-11-27 18:06:04 +00:00
|
|
|
|
2022-02-28 10:19:10 +00:00
|
|
|
:_os/src/lib/vfs/tap/_:
|
|
|
|
A VFS plugin that allows for packet-level access of a NIC or uplink session.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_gems/src/lib/vfs/trace/_:
|
2020-05-25 10:06:41 +00:00
|
|
|
A VFS plugin that makes core's TRACE service accessible as a pseudo
|
|
|
|
file system.
|
2013-11-27 18:06:04 +00:00
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_gems/src/lib/vfs/import/_:
|
2020-05-25 10:06:41 +00:00
|
|
|
A VFS plugin that pre-populates a VFS with initial content.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_gems/src/lib/vfs/pipe/_:
|
2020-05-25 10:06:41 +00:00
|
|
|
A VFS plugin that provides bi-directional pipes for exchanging streamed
|
|
|
|
data between components.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_gems/src/lib/vfs/ttf/_:
|
2020-05-25 10:06:41 +00:00
|
|
|
A VFS plugin that makes rendered pixel data of the glyphs of Truetype fonts
|
|
|
|
available as a pseudo file system.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_libports/src/lib/vfs/jitterentropy/_:
|
2020-05-25 10:06:41 +00:00
|
|
|
A VFS plugin that provides random numbers based on the jitter of executing
|
|
|
|
CPU instructions.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_libports/src/lib/vfs/lwip/_:
|
2020-05-25 10:06:41 +00:00
|
|
|
A VFS plugin that uses the light-weight IP (lwIP) stack to provide a
|
|
|
|
network socket interface as a pseudo file system.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_dde_linux/src/lib/vfs/lxip/_:
|
2020-05-25 10:06:41 +00:00
|
|
|
A VFS plugin that uses the TCP/IP stack ported from the Linux kernel to
|
|
|
|
provide a network socket interface as a pseudo file system.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_libports/src/lib/vfs/fatfs/_:
|
2020-05-25 10:06:41 +00:00
|
|
|
A VFS plugin that allows for the mounting of FAT-formatted block devices.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_dde_rump/src/lib/vfs/rump/_:
|
2020-05-25 10:06:41 +00:00
|
|
|
A VFS plugin that enables the use of NetBSD's file-system drivers such
|
|
|
|
as ext2 or msdos.
|
|
|
|
|
|
|
|
|
|
|
|
Libraries
|
|
|
|
=========
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_libports/lib/mk/libc/_:
|
2020-05-25 10:06:41 +00:00
|
|
|
C runtime ported from FreeBSD.
|
2013-11-27 18:06:04 +00:00
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_libports/lib/mk/stdcxx/_:
|
2012-11-28 19:49:23 +00:00
|
|
|
Standard C++ library
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_libports/lib/mk/mesa_api/_:
|
2017-08-29 09:43:39 +00:00
|
|
|
Mesa OpenGL API with backends for software rasterization (egl_swrast)
|
|
|
|
and Intel Graphics (egl_i965)
|
2011-12-22 15:19:25 +00:00
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_libports/lib/mk/mupdf/_:
|
2012-05-29 15:44:04 +00:00
|
|
|
PDF rendering engine.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_libports/lib/mk/ncurses/_:
|
2012-05-29 15:44:04 +00:00
|
|
|
Library for implementing pseudo-graphical applications (i.e., VIM) that
|
|
|
|
run on a text terminal.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_libports/lib/mk/qt5_*/_:
|
2020-08-24 13:59:22 +00:00
|
|
|
Qt5 framework, using GUI session and NIC session as back end.
|
2013-08-12 13:40:40 +00:00
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_libports/lib/mk/vfs_jitterentropy.mk_:
|
2014-08-27 13:48:54 +00:00
|
|
|
A VFS plugin that makes a jitter-based random-number generator available
|
|
|
|
as a file within the process-local VFS.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_libports/lib/mk/libarchive.mk_:
|
2018-02-28 11:59:58 +00:00
|
|
|
Library providing a common interface to a variety of archive
|
|
|
|
formats.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_libports/lib/mk/lz4.mk_:
|
2018-02-28 11:59:58 +00:00
|
|
|
Library for processing LZ4 lossless compression archives.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_libports/lib/mk/liblzma.mk_:
|
2018-02-28 11:59:58 +00:00
|
|
|
Library for processing LZMA archives.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_libports/lib/mk/libgcrypt.mk_:
|
2018-02-28 11:59:58 +00:00
|
|
|
GnuPG library for OpenPGP processing, e.g., signature verification.
|
|
|
|
|
2011-12-22 15:19:25 +00:00
|
|
|
|
|
|
|
Applications
|
|
|
|
############
|
|
|
|
|
|
|
|
Applications are Genode components that use other component's services but
|
2020-11-25 13:18:57 +00:00
|
|
|
usually do not provide services. They are typically located in the _src/app/_
|
2011-12-22 15:19:25 +00:00
|
|
|
subdirectory of a repository. Most applications come with README files
|
|
|
|
located in their respective directory.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_gems/src/app/backdrop/_:
|
2020-08-24 13:59:22 +00:00
|
|
|
GUI client application that sets a composition of PNG images as desktop
|
|
|
|
background.
|
2011-12-22 15:19:25 +00:00
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_demo/src/app/launchpad/_:
|
2011-12-22 15:19:25 +00:00
|
|
|
Graphical application for interactively starting and killing subsystems.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_demo/src/app/scout/_:
|
2011-12-22 15:19:25 +00:00
|
|
|
Graphical hypertext browser used for Genode's default demonstration scenario.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_ports/src/app/gdb_monitor/_:
|
2011-12-22 15:19:25 +00:00
|
|
|
Application that allows the debugging of a process via GDB over a remote
|
|
|
|
connection.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_libports/src/app/qt5/qt_launchpad/_:
|
2015-03-16 14:37:47 +00:00
|
|
|
Graphical application starter implemented using Qt.
|
2011-12-22 15:19:25 +00:00
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_libports/src/app/qt5/examples/_:
|
2015-03-16 14:37:47 +00:00
|
|
|
Several example applications that come with Qt.
|
2013-08-12 13:40:40 +00:00
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/app/sequence/_:
|
2017-08-29 09:43:39 +00:00
|
|
|
Simple utility to serialize the execution of multiple components
|
2011-12-22 15:19:25 +00:00
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_ports/src/noux-pkg/_:
|
2012-05-29 15:44:04 +00:00
|
|
|
Ports of popular commandline-based Unix software such as VIM, bash,
|
|
|
|
coreutils, binutils, gcc, findutils, and netcat. The programs are supposed
|
|
|
|
to be executed within the Noux runtime environment.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_ports/src/app/lighttpd/_:
|
2012-08-22 18:13:12 +00:00
|
|
|
Lighttpd is a fast and feature-rich web server. The port of lighttpd uses
|
|
|
|
a file-system session to access the website content and the web-server
|
|
|
|
configuration.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/app/trace_logger/_:
|
2018-02-28 11:59:58 +00:00
|
|
|
Convenient, runtime-configurable frontend to the tracing facility.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/app/rom_reporter/_:
|
2018-02-28 11:59:58 +00:00
|
|
|
The ROM-reporter component requests a ROM session and reports the
|
|
|
|
content of the ROM dataspace to a report session with the same label
|
|
|
|
as the ROM session.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/app/log_core/_:
|
2018-02-28 11:59:58 +00:00
|
|
|
Component transforming core and kernel output to Genode LOG output.
|
|
|
|
|
2020-05-25 10:06:41 +00:00
|
|
|
|
2018-02-28 11:59:58 +00:00
|
|
|
Package-management components
|
|
|
|
=============================
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_gems/src/app/depot_query/_:
|
2018-02-28 11:59:58 +00:00
|
|
|
Tool for querying subsystem information from a depot.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_gems/src/app/depot_download_manager/_:
|
2018-02-28 11:59:58 +00:00
|
|
|
Tool for managing the download of depot content.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_gems/src/app/depot_deploy/_:
|
2018-02-28 11:59:58 +00:00
|
|
|
Subsystem init configuration generator based on blueprints.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_libports/src/app/fetchurl/_:
|
2018-02-28 11:59:58 +00:00
|
|
|
A runtime-configurable frontend to the libcURL library for
|
|
|
|
downloading content.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_libports/src/app/extract/_:
|
2018-02-28 11:59:58 +00:00
|
|
|
Tool for extracting archives using libarchive.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_ports/src/app/verify/_:
|
2018-02-28 11:59:58 +00:00
|
|
|
This component verifies detached OpenPGP signatures using libgcrypt.
|
|
|
|
|
2011-12-22 15:19:25 +00:00
|
|
|
|
|
|
|
Runtime environments
|
|
|
|
####################
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/server/loader/_: A service that allows the creation and destruction
|
2012-05-29 15:44:04 +00:00
|
|
|
of Genode subsystems via a session interface. For further information,
|
2020-11-25 13:18:57 +00:00
|
|
|
refer to _os/src/server/loader/README_.
|
2011-12-22 15:19:25 +00:00
|
|
|
|
2022-02-28 10:19:10 +00:00
|
|
|
:_ports/src/virtualbox6/_: VirtualBox running on top of the NOVA hypervisor.
|
2014-11-27 18:42:24 +00:00
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/server/vmm/_: A virtual machine monitor that is based on
|
2020-05-25 10:06:41 +00:00
|
|
|
hardware-assisted virtualization of ARM platforms. It is supported on
|
|
|
|
the base-hw kernel only.
|
|
|
|
|
2020-11-25 13:18:57 +00:00
|
|
|
:_os/src/server/cpu_balancer/_: The CPU balancer intercepts the interaction
|
|
|
|
of components with core's low-level services to migrate threads dynamically
|
|
|
|
between CPU cores.
|
|
|
|
|