doc: update components.txt
This commit is contained in:
parent
70acd4b2d5
commit
a90aa78c6e
|
@ -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
|
various repositories. This document provides an overview of these components
|
||||||
and outlines the systematics behind them.
|
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
|
Categorization of components
|
||||||
############################
|
############################
|
||||||
|
@ -79,6 +84,10 @@ Platform devices
|
||||||
this simple ACPI parser traverses the ACPI tables and reports device-resource
|
this simple ACPI parser traverses the ACPI tables and reports device-resource
|
||||||
information (e.g., interrupt lines of PCI devices).
|
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':
|
:'libports/src/app/acpica':
|
||||||
In addition to our ACPI base driver, the acpica component uses the
|
In addition to our ACPI base driver, the acpica component uses the
|
||||||
ACPICA library to provide access to dynamic functions like battery
|
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.
|
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.
|
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.
|
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
|
Framebuffer and input drivers
|
||||||
=============================
|
=============================
|
||||||
|
@ -141,15 +144,9 @@ input-session interfaces respectively.
|
||||||
Driver for boot-time initialized framebuffers (e.g., UEFI GOP)
|
Driver for boot-time initialized framebuffers (e.g., UEFI GOP)
|
||||||
discovered from the 'platform_info' ROM
|
discovered from the 'platform_info' ROM
|
||||||
|
|
||||||
:'os/src/drivers/framebuffer/spec/pl11x':
|
:'os/src/drivers/framebuffer/pl11x':
|
||||||
Driver for the PL110/PL111 LCD display.
|
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':
|
:'os/src/drivers/framebuffer/spec/imx53':
|
||||||
Driver for LCD output on i.MX53 SoCs.
|
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.
|
driver is only usable on the Linux base platform.
|
||||||
|
|
||||||
:'os/src/drivers/gpu/intel':
|
:'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':
|
:'dde_linux/src/drivers/framebuffer/intel':
|
||||||
Framebuffer driver for Intel i915 compatible graphic cards based on
|
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
|
refer to the run scripts at 'dde_linux/run/usb_hid' and
|
||||||
'dde_linux/run/usb_storage'.
|
'dde_linux/run/usb_storage'.
|
||||||
|
|
||||||
|
:'dde_linux/src/drivers/usb_hid':
|
||||||
|
USB Human Interface Device driver using the USB session interface.
|
||||||
|
|
||||||
|
|
||||||
Timer drivers
|
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
|
Driver for SD-cards connected via the PL180 device as found on the PBX-A9
|
||||||
platform.
|
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':
|
:'os/src/drivers/sd_card/spec/imx53':
|
||||||
Driver for SD-cards connected to the Freescale i.MX53 platform like the
|
Driver for SD-cards connected to the Freescale i.MX53 platform like the
|
||||||
Quick Start Board or the USB armory device.
|
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':
|
:'os/src/drivers/ahci':
|
||||||
Driver for SATA disks and CD-ROMs on x86 PCs.
|
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':
|
:'os/src/drivers/usb_block':
|
||||||
USB Mass Storage Bulk-Only driver using the USB session interface.
|
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
|
Native device driver for the LAN9118 network adaptor as featured on the
|
||||||
PBX-A9 platform.
|
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':
|
:'dde_ipxe/src/drivers/nic':
|
||||||
Device drivers ported from the iPXE project. Supported devices are Intel
|
Device drivers ported from the iPXE project. Supported devices are Intel
|
||||||
E1000 and pcnet32.
|
E1000 and pcnet32.
|
||||||
|
@ -281,19 +274,12 @@ defined at 'os/include/nic_session'.
|
||||||
General-purpose I/O drivers
|
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':
|
:'os/src/drivers/gpio/spec/imx53':
|
||||||
Driver for accessing the GPIO pins of i.MX53 platforms.
|
Driver for accessing the GPIO pins of i.MX53 platforms.
|
||||||
|
|
||||||
:'os/src/drivers/gpio/spec/rpi':
|
:'os/src/drivers/gpio/spec/rpi':
|
||||||
Driver for accessing the GPIO pins of Raspberry Pi platforms.
|
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
|
Resource multiplexers
|
||||||
#####################
|
#####################
|
||||||
|
@ -319,14 +305,21 @@ subdirectory of a source repository.
|
||||||
the physical network. DHCP requests originating from the virtual NIC sessions
|
the physical network. DHCP requests originating from the virtual NIC sessions
|
||||||
are delegated to the physical network.
|
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
|
: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
|
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
|
separate block session. For using this server, please refer to the run
|
||||||
script at 'os/run/part_block'.
|
script at 'os/run/part_block'.
|
||||||
|
|
||||||
:File system: The FAT file-system service allows multiple clients to
|
:File system: The VFS file-system server allows multiple clients to
|
||||||
concurrently access the same FAT-formatted block device. It is located
|
concurrently access the same virtual file system. It is located at
|
||||||
at 'libports/src/server/fatfs_fs' and supports FAT, FAT32, and exFAT.
|
'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
|
:Terminal: The terminal_mux service located at gems/src/server/terminal_mux
|
||||||
is able to provide multiple terminal sessions over one terminal-client
|
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
|
Protocol stacks come either in the form of separate components that translate
|
||||||
one session interface to another, or in the form of libraries.
|
one session interface to another, or in the form of libraries.
|
||||||
|
|
||||||
Separate components:
|
Separate components
|
||||||
|
===================
|
||||||
|
|
||||||
:'os/src/server/nit_fb':
|
:'os/src/server/nit_fb':
|
||||||
Translates a nitpicker session to a pair of framebuffer and input sessions.
|
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
|
Provides each file of an ISO9660 file system accessed via a block session as
|
||||||
separate ROM session.
|
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':
|
:'os/src/server/lx_fs':
|
||||||
A file system server that makes the file system of a Linux base platform
|
A file system server that makes the file system of a Linux base platform
|
||||||
available to Genode.
|
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':
|
:'os/src/server/rom_block':
|
||||||
Provides the content of a ROM file as a block session, similar to the
|
Provides the content of a ROM file as a block session, similar to the
|
||||||
loop-mount mechanism on Linux
|
loop-mount mechanism on Linux
|
||||||
|
@ -410,9 +396,6 @@ Separate components:
|
||||||
switching between configuration variants dependent on the state of
|
switching between configuration variants dependent on the state of
|
||||||
the system.
|
the system.
|
||||||
|
|
||||||
:'os/src/server/vfs':
|
|
||||||
A file-system server using the VFS library and plugins as backend.
|
|
||||||
|
|
||||||
:'os/src/server/log_terminal':
|
:'os/src/server/log_terminal':
|
||||||
Forwards terminal output to a LOG session.
|
Forwards terminal output to a LOG session.
|
||||||
|
|
||||||
|
@ -441,6 +424,15 @@ Separate components:
|
||||||
up an equally named file on the file system.
|
up an equally named file on the file system.
|
||||||
Please refer to 'os/src/server/fs_rom' for more information.
|
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':
|
:'os/src/server/dynamic_rom':
|
||||||
A simple ROM service that provides ROM modules that change in time according
|
A simple ROM service that provides ROM modules that change in time according
|
||||||
to a configured timeline.
|
to a configured timeline.
|
||||||
|
@ -458,11 +450,6 @@ Separate components:
|
||||||
is then propagated to the clients of the ROM service according to a
|
is then propagated to the clients of the ROM service according to a
|
||||||
configurable information-flow policy.
|
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':
|
:'os/src/server/input_filter':
|
||||||
A component that transforms and merges input events from multiple sources
|
A component that transforms and merges input events from multiple sources
|
||||||
into a single stream.
|
into a single stream.
|
||||||
|
@ -474,20 +461,56 @@ Separate components:
|
||||||
A wrapper for nitpicker's session interface that applies alpha-blending to
|
A wrapper for nitpicker's session interface that applies alpha-blending to
|
||||||
the of views a nitpicker client.
|
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':
|
:'libports/lib/mk/libc':
|
||||||
C runtime ported from FreeBSD.
|
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':
|
:'libports/lib/mk/stdcxx':
|
||||||
Standard C++ library
|
Standard C++ library
|
||||||
|
|
||||||
|
@ -495,28 +518,13 @@ Libraries:
|
||||||
Mesa OpenGL API with backends for software rasterization (egl_swrast)
|
Mesa OpenGL API with backends for software rasterization (egl_swrast)
|
||||||
and Intel Graphics (egl_i965)
|
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':
|
:'libports/lib/mk/mupdf':
|
||||||
PDF rendering engine.
|
PDF rendering engine.
|
||||||
|
|
||||||
:'libports/lib/mk/sdl':
|
|
||||||
Translates the libSDL API to framebuffer and input sessions.
|
|
||||||
|
|
||||||
:'libports/lib/mk/ncurses':
|
:'libports/lib/mk/ncurses':
|
||||||
Library for implementing pseudo-graphical applications (i.e., VIM) that
|
Library for implementing pseudo-graphical applications (i.e., VIM) that
|
||||||
run on a text terminal.
|
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_*':
|
:'libports/lib/mk/qt5_*':
|
||||||
Qt5 framework, using nitpicker session and NIC session as back end.
|
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.
|
:'gems/app/launcher': Graphical launcher of Genode subsystems.
|
||||||
|
|
||||||
:'os/app/cli_monitor': Command-line-based launcher of Genode subsystems.
|
|
||||||
|
|
||||||
:'demo/src/app/scout':
|
:'demo/src/app/scout':
|
||||||
Graphical hypertext browser used for Genode's default demonstration scenario.
|
Graphical hypertext browser used for Genode's default demonstration scenario.
|
||||||
|
|
||||||
|
@ -600,6 +606,7 @@ located in their respective directory.
|
||||||
:'os/src/app/log_core':
|
:'os/src/app/log_core':
|
||||||
Component transforming core and kernel output to Genode LOG output.
|
Component transforming core and kernel output to Genode LOG output.
|
||||||
|
|
||||||
|
|
||||||
Package-management components
|
Package-management components
|
||||||
=============================
|
=============================
|
||||||
|
|
||||||
|
@ -626,10 +633,6 @@ Package-management components
|
||||||
Runtime environments
|
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
|
:'ports/src/app/seoul': Seoul is a virtual-machine monitor developed for
|
||||||
the use with the NOVA platform. It virtualizes 32bit x86 PC hardware
|
the use with the NOVA platform. It virtualizes 32bit x86 PC hardware
|
||||||
including various peripherals.
|
including various peripherals.
|
||||||
|
@ -638,7 +641,9 @@ Runtime environments
|
||||||
of Genode subsystems via a session interface. For further information,
|
of Genode subsystems via a session interface. For further information,
|
||||||
refer to 'os/src/server/loader/README'.
|
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.
|
:'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.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue