doc: update components.txt

This commit is contained in:
Norman Feske 2020-05-25 12:06:41 +02:00 committed by Christian Helmuth
parent 70acd4b2d5
commit a90aa78c6e
1 changed files with 91 additions and 86 deletions

View File

@ -14,6 +14,11 @@ 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.
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.
Categorization of components
############################
@ -79,6 +84,10 @@ Platform devices
this simple ACPI parser traverses the ACPI tables and reports device-resource
information (e.g., interrupt lines of PCI devices).
:'os/src/app/smbios_decoder':
A component that parses SMBIOS information on x86 platforms and makes the
result available as a report.
:'libports/src/app/acpica':
In addition to our ACPI base driver, the acpica component uses the
ACPICA library to provide access to dynamic functions like battery
@ -93,18 +102,12 @@ UART devices
The UART device drivers implement the UART-session interface.
:'os/src/drivers/uart/spec/pl011':
:'os/src/drivers/uart/spec/pbxa9':
Driver for the PL011 UART as found on many ARM-based platforms.
:'os/src/drivers/uart/spec/i8250':
:'os/src/drivers/uart/spec/x86':
Driver for the i8250 UART as found on PC hardware.
:'os/src/drivers/uart/spec/omap4':
Driver for the UART as found on OMAP4-based hardware.
:'os/src/drivers/uart/spec/exynos5':
Driver for the UART as found on Exynos-5-based hardware.
Framebuffer and input drivers
=============================
@ -141,15 +144,9 @@ input-session interfaces respectively.
Driver for boot-time initialized framebuffers (e.g., UEFI GOP)
discovered from the 'platform_info' ROM
:'os/src/drivers/framebuffer/spec/pl11x':
:'os/src/drivers/framebuffer/pl11x':
Driver for the PL110/PL111 LCD display.
:'os/src/drivers/framebuffer/spec/omap4':
Driver for HDMI output on OMAP4 SoCs.
:'os/src/drivers/framebuffer/spec/exynos5':
Driver for HDMI output on Exynos-5 SoCs.
:'os/src/drivers/framebuffer/spec/imx53':
Driver for LCD output on i.MX53 SoCs.
@ -161,7 +158,7 @@ input-session interfaces respectively.
driver is only usable on the Linux base platform.
:'os/src/drivers/gpu/intel':
Intel Graphics GPU multiplexer for Broadwell and newer.
An experimental Intel Graphics GPU multiplexer for Broadwell and newer.
:'dde_linux/src/drivers/framebuffer/intel':
Framebuffer driver for Intel i915 compatible graphic cards based on
@ -173,6 +170,9 @@ input-session interfaces respectively.
refer to the run scripts at 'dde_linux/run/usb_hid' and
'dde_linux/run/usb_storage'.
:'dde_linux/src/drivers/usb_hid':
USB Human Interface Device driver using the USB session interface.
Timer drivers
=============
@ -220,12 +220,6 @@ All block drivers implement the block-session interface defined at
Driver for SD-cards connected via the PL180 device as found on the PBX-A9
platform.
:'os/src/drivers/sd_card/spec/omap4':
Driver for SD-cards connected to the SD-card controller of the OMAP4 SoC.
:'os/src/drivers/sd_card/spec/exynos5':
Driver for SD-cards and eMMC connected to Exynos-5-based platforms.
:'os/src/drivers/sd_card/spec/imx53':
Driver for SD-cards connected to the Freescale i.MX53 platform like the
Quick Start Board or the USB armory device.
@ -241,6 +235,9 @@ All block drivers implement the block-session interface defined at
:'os/src/drivers/ahci':
Driver for SATA disks and CD-ROMs on x86 PCs.
:'os/src/drivers/nvme':
Driver for NVMe block devices on x86 PCs.
:'os/src/drivers/usb_block':
USB Mass Storage Bulk-Only driver using the USB session interface.
@ -259,10 +256,6 @@ defined at 'os/include/nic_session'.
Native device driver for the LAN9118 network adaptor as featured on the
PBX-A9 platform.
:'os/src/drivers/nic/gem':
Device driver for Cadence EMAC PS network adaptor as featured on the
Xilinx Zynq.
:'dde_ipxe/src/drivers/nic':
Device drivers ported from the iPXE project. Supported devices are Intel
E1000 and pcnet32.
@ -281,19 +274,12 @@ defined at 'os/include/nic_session'.
General-purpose I/O drivers
===========================
:'os/src/drivers/gpio/spec/omap4':
Driver for accessing the GPIO pins of OMAP4 platforms.
:'os/src/drivers/gpio/spec/imx53':
Driver for accessing the GPIO pins of i.MX53 platforms.
:'os/src/drivers/gpio/spec/rpi':
Driver for accessing the GPIO pins of Raspberry Pi platforms.
:'os/src/drivers/gpio/spec/exynos5':
Driver for accessing the GPIO pins of Exynos4 platforms, e.g.,
Odroid-X2.
Resource multiplexers
#####################
@ -319,14 +305,21 @@ subdirectory of a source repository.
the physical network. DHCP requests originating from the virtual NIC sessions
are delegated to the physical network.
The NIC router located at 'os/src/server/nic_router' multiplexes one NIC
session to multiple virtual NIC sessions by applying network address
translation (NAT).
:Block: The block-device partition server at 'os/src/server/part_block' reads
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
script at 'os/run/part_block'.
:File system: The FAT file-system service allows multiple clients to
concurrently access the same FAT-formatted block device. It is located
at 'libports/src/server/fatfs_fs' and supports FAT, FAT32, and exFAT.
:File system: The VFS file-system server allows multiple clients to
concurrently access the same virtual file system. It is located at
'os/src/server/vfs'. The VFS can be assembled out of several builtin
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).
:Terminal: The terminal_mux service located at gems/src/server/terminal_mux
is able to provide multiple terminal sessions over one terminal-client
@ -340,7 +333,8 @@ 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.
Separate components:
Separate components
===================
:'os/src/server/nit_fb':
Translates a nitpicker session to a pair of framebuffer and input sessions.
@ -367,18 +361,10 @@ Separate components:
Provides each file of an ISO9660 file system accessed via a block session as
separate ROM session.
:'dde_rump/src/server/rump_fs':
A file-system server that contains various file-systems ported from the
NetBSD kernel.
:'os/src/server/lx_fs':
A file system server that makes the file system of a Linux base platform
available to Genode.
:'os/src/server/trace_fs':
A pseudo file system that can be used as a front end to core's TRACE
service.
:'os/src/server/rom_block':
Provides the content of a ROM file as a block session, similar to the
loop-mount mechanism on Linux
@ -410,9 +396,6 @@ Separate components:
switching between configuration variants dependent on the state of
the system.
:'os/src/server/vfs':
A file-system server using the VFS library and plugins as backend.
:'os/src/server/log_terminal':
Forwards terminal output to a LOG session.
@ -441,6 +424,15 @@ Separate components:
up an equally named file on the file system.
Please refer to 'os/src/server/fs_rom' for more information.
For use cases where ROMs are known to be static, the
'os/src/server/cached_fs_rom' can be considered as a faster alternative to
the regular 'fs_rom' server. Note that 'cached_fs_rom' is not supported
in base-linux though.
:'os/src/server/chroot':
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.
:'os/src/server/dynamic_rom':
A simple ROM service that provides ROM modules that change in time according
to a configured timeline.
@ -458,11 +450,6 @@ Separate components:
is then propagated to the clients of the ROM service according to a
configurable information-flow policy.
:'ports/src/app/openvpn':
OpenVPN enables access to remote network resources through a secure tunnel
by providing an encrypted connection to a remote host. It is plugged between
NIC server (such as a network driver) and NIC client.
:'os/src/server/input_filter':
A component that transforms and merges input events from multiple sources
into a single stream.
@ -474,20 +461,56 @@ Separate components:
A wrapper for nitpicker's session interface that applies alpha-blending to
the of views a nitpicker client.
Libraries:
VFS plugins
===========
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.
:'gems/src/lib/vfs/trace':
A VFS plugin that makes core's TRACE service accessible as a pseudo
file system.
:'gems/src/lib/vfs/import':
A VFS plugin that pre-populates a VFS with initial content.
:'gems/src/lib/vfs/pipe':
A VFS plugin that provides bi-directional pipes for exchanging streamed
data between components.
:'gems/src/lib/vfs/ttf':
A VFS plugin that makes rendered pixel data of the glyphs of Truetype fonts
available as a pseudo file system.
:'libports/src/lib/vfs/jitterentropy':
A VFS plugin that provides random numbers based on the jitter of executing
CPU instructions.
:'libports/src/lib/vfs/lwip':
A VFS plugin that uses the light-weight IP (lwIP) stack to provide a
network socket interface as a pseudo file system.
:'dde_linux/src/lib/vfs/lxip':
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.
:'libports/src/lib/vfs/fatfs':
A VFS plugin that allows for the mounting of FAT-formatted block devices.
:'dde_rump/src/lib/vfs/rump':
A VFS plugin that enables the use of NetBSD's file-system drivers such
as ext2 or msdos.
Libraries
=========
:'libports/lib/mk/libc':
C runtime ported from FreeBSD.
:'libports/lib/mk/libc_fatfs':
Accesses files on a block device that contains a FAT32 file system.
:'libports/lib/mk/libc_fuse_exfat':
Accesses files on a block device that contains an exFAT file system.
:'libports/lib/mk/libc_fuse_ext2':
Accesses files on a block device that contains an ext2 file system.
:'libports/lib/mk/stdcxx':
Standard C++ library
@ -495,28 +518,13 @@ Libraries:
Mesa OpenGL API with backends for software rasterization (egl_swrast)
and Intel Graphics (egl_i965)
:'libports/lib/mk/pthread':
Subset of the POSIX thread and semaphore API.
:'libports/lib/mk/python':
Runtime of the Python scripting language.
:'libports/lib/mk/mupdf':
PDF rendering engine.
:'libports/lib/mk/sdl':
Translates the libSDL API to framebuffer and input sessions.
:'libports/lib/mk/ncurses':
Library for implementing pseudo-graphical applications (i.e., VIM) that
run on a text terminal.
:'libports/lib/mk/avcodec':
A library for video decoding, conversion, and streaming.
:'libports/lib/mk/lua':
Runtime for the Lua scripting language.
:'libports/lib/mk/qt5_*':
Qt5 framework, using nitpicker session and NIC session as back end.
@ -555,8 +563,6 @@ located in their respective directory.
:'gems/app/launcher': Graphical launcher of Genode subsystems.
:'os/app/cli_monitor': Command-line-based launcher of Genode subsystems.
:'demo/src/app/scout':
Graphical hypertext browser used for Genode's default demonstration scenario.
@ -600,6 +606,7 @@ located in their respective directory.
:'os/src/app/log_core':
Component transforming core and kernel output to Genode LOG output.
Package-management components
=============================
@ -626,10 +633,6 @@ Package-management components
Runtime environments
####################
:'ports/src/noux': Noux is an experimental implementation of a UNIX-like API
that enables the use of unmodified command-line based GNU software. For using
noux, refer to the run script 'ports/run/noux.run'.
:'ports/src/app/seoul': Seoul is a virtual-machine monitor developed for
the use with the NOVA platform. It virtualizes 32bit x86 PC hardware
including various peripherals.
@ -638,7 +641,9 @@ Runtime environments
of Genode subsystems via a session interface. For further information,
refer to 'os/src/server/loader/README'.
:'ports/src/app/dosbox': A port of DosBox for executing DOS software.
:'ports/src/virtualbox': VirtualBox running on top of the NOVA hypervisor.
:'os/src/server/vmm': A virtual machine monitor that is based on
hardware-assisted virtualization of ARM platforms. It is supported on
the base-hw kernel only.