Available userlevel components

This page serves as an index of components that are available across all projects.

Native component libraries

Components Description Status Maintained by
libcpio A library for parsing files in CPIO format. active seL4 Foundation
libelf A library for reading ELF files. active seL4 Foundation
libethdrivers A library for ethernet drivers on selected platforms, supporting lwIP and picoTCP. active seL4 Foundation
libfdt A library for flat device tree manipulation, ported from linux kernel version: 5.0.6. inactive seL4 Foundation
liblwip A library for the lwIP, ported from lwip-1.4.1. inactive seL4 Foundation
libpci A library for PCI drivers. active seL4 Foundation
libpicotcp A library of picoTCP header files. active seL4 Foundation
libplatsupport A library of platform support utilities, interfaces for interacting with drivers, timer drivers, serial drivers and clock drivers. active seL4 Foundation
libutils A library of generic utilities, such as debugging macros and compile time asserts. active seL4 Foundation
libfdtgen A library for generating flattened device trees which can be passed to virtual machines. active seL4 Foundation
libjansson The port of Jansson-2.7 to seL4 and the seL4 project build system. inactive seL4 Foundation
libmsgpack An seL4 build system wrapper to build msgpack-c, a library for dealing with MessagePack data. inactive seL4 Foundation
libnfs A wrapper for supporting project build for a given network file system implementation. inactive seL4 Foundation
libplatsupportports A collection of drivers proted from GPL-based sources such as U-Boot and Linux. active seL4 Foundation
libringbuffer A library of the ring buffer implementation. inactive seL4 Foundation
libsdhcdrivers A library of the SD card driver. inactive seL4 Foundation
libtx2bpmp A port of the Tegra186 Boot and Power Management Processor (BPMP) interfaces from U-Boot to seL4. active seL4 Foundation
libusbdrivers A USB driver. inactive seL4 Foundation
libvirtqueue A library implementation of a virtqueue inspired from the virtio specification. active seL4 Foundation
libvswitch A library implementation of a vswitch, which is designed for providing an interface to manage and route data between components identified by a MAC address. active seL4 Foundation
libsel4allocman An allocator for managing virtual memory, malloc memory and cspaces. active seL4 Foundation
libsel4bench A library of benchmarking utilities on seL4, such as logging and PMU event counters. active seL4 Foundation
libsel4debug A library for debugging userspace applications on seL4. active seL4 Foundation
libsel4muslcsys A library of minimal muslc syscall implementation for seL4. active seL4 Foundation
libsel4platsupport A wrapper around libplatsupport specificially for seL4. active seL4 Foundation
libsel4serialserver A library for creating serial servers. A server thread is able to connect to a serial device and act as a multiplexer for writes. active seL4 Foundation
libsel4simple An interface which abstracts over the boot environment of a seL4 application. active seL4 Foundation
libsel4simple-default An implementation of libsel4simple for the master branch of the seL4 kernel. active seL4 Foundation
libsel4sync A synchronisation library that uses notifications to construct basic locks. active seL4 Foundation
libsel4test A library for running tests and generating test output in either human readable or xml format. active seL4 Foundation
libsel4utils A library of OS-like utilities for building benchmarks and applications on seL4. active seL4 Foundation
libsel4vka An allocation interface for seL4. active seL4 Foundation
libsel4vspace A virtual memory management interface for seL4. active seL4 Foundation
libsel4bga A basic driver for the Bochs Graphics Adaptor, currently only supports the x86 IA32 architecture. inactive seL4 Foundation
libsel4dma An allocator for managing DMA memory. active seL4 Foundation
libsel4keyboard A basic keyboard driver. active seL4 Foundation
libsel4nanopb An interface between seL4 IPC buffers and nanopb. Nanopb is a small code-size Protocol Buffers implementation in ANSI C. active seL4 Foundation
libsel4rpc A library for allocating resources over process boundaries. It defines a Protocol Buffer protocol, and contains wrappers for processing RPC messages used by servers. active seL4 Foundation
libsel4vchan A vchan implementation on seL4, which provides communication channels between virtual machines. inactive seL4 Foundation

Camkes reusable components

Components Description Status Maintained by
ClockServer A CAmkES component which abstracts over and multiplexes client accesses to clock devices on a platform. Supported maintainer wanted
Ethdriver A CAmkES component which abstracts over and multiplexes client accesses to an Ethernet device. Supported maintainer wanted
FileServer A CAmkES component which abstracts over and multiplexes client accesses to a CPIO-based file system. Supported maintainer wanted
GPIOMUXServer A CAmkES component which abstracts over and multiplexes client accesses to a GPIO and pin multiplexer controller. Supported maintainer wanted
PCIConfigIO A CAmkES component which abstracts over and multiplexes client accesses to the PCI configuration space of a platform. Supported maintainer wanted
PicoServer A CAmkES component which abstracts over and multiplexes client accesses to an IP stack, specifically, the PicoTCP TCP/IP stack. Supported maintainer wanted
ResetServer A CAmkES component which abstracts over and multiplexes client accesses to a reset line controller. Supported maintainer wanted
RTC A CAmkES component which abstracts over and multiplexes client accesses to a real-time clock device. Supported maintainer wanted
SerialServer A CAmkES component which abstracts over and multiplexes client accesses to a serial device. Supported maintainer wanted
TimeServer A CAmkES component which abstracts over and multiplexes client accesses to a timer device. Supported maintainer wanted
VirtQueue A stub CAmkES component which is used to help initialise virtqueue connections. Supported maintainer wanted
Serial Stub hardware CAmkES component that abstracts over a pc99-based serial device. Supported maintainer wanted
PIT Stub hardware CAmkES component that abstracts over the x86 Programmable Interval Timer. Supported maintainer wanted

Device drivers

Serial

Components Description Status Maintained by
plat/rockpro64/serial.c rockchip,rk3399-uart driver Supported on rockpro64 platform seL4 Foundation
plat/bcm2837/serial.c rpi3 brcm,bcm2835-aux-uart UART driver Supported on rpi3 platform seL4 Foundation
plat/odroidc2/serial.c odroidc2 amlogic,meson-gx-uart uart driver Supported on odroidc2 platform seL4 Foundation
plat/am335x/serial.c am335x ti,am3352-uart serial driver Supported on am335x platforms. seL4 Foundation
plat/imx31/serial.c i.MX31 fsl,imx31-uart serial driver Supported on kzm platform. seL4 Foundation
plat/fvp/serial.c fvp arm,pl011 serial driver This driver is a copy-paste from the pl011 driver for the hikey platform. They should be merged. seL4 Foundation
plat/hikey/serial.c hikey arm,pl011 Serial driver Supported on Hikey platform. Could likely be made available for any platform. seL4 Foundation
plat/qemu-arm-virt/serial.c qemu-arm-virt arm,pl011 serial driver This driver is a copy-paste from the pl011 driver for the hikey platform. They should be merged. seL4 Foundation
plat/apq8064/serial.c apq8064 qcom,gsbi-v1.0.0 serial driver Supported on apq8064 platform. (Platform is currently unmaintained) seL4 Foundation
plat/hifive/uart.c hifive sifive,uart0 UART serial driver Supported on hifive platform seL4 Foundation
plat/pc99/serial.c UART serial driver for the serial devices on the pc99 platform Supported on pc99 platform seL4 Foundation
plat/pc99/ega.c EGA driver for the EGA (Enhanced Graphics Adapter) device on the pc99 platform Supported on pc99 platform seL4 Foundation
plat/omap3/serial.c omap3 ti,omap3-uart UART serial driver Supported on omap3 platform seL4 Foundation
plat/rocketchip/serial.c Empty driver implementation for the serial device on the rocketchip platform. Non-functional skeleton implementation, supported on rocketchip platform seL4 Foundation
plat/rocketchip/chardev.c Empty chardev implementation for the rocketchip platform. Non-functional skeleton implementation, supported on rocketchip platform seL4 Foundation
mach/imx/serial/serial.c UART serial drivers for the UART devices in the i.MX SoCs Supported on i.MX SoCs seL4 Foundation
mach/exynos/serial.c UART serial driver for the UART devices in the Exynos SoCs Supported on Exynos SoCs seL4 Foundation
mach/zynq/serial.c UART serial drivers for the UART devices in the ZYNQ SoCs Supported on ZYNQ SoCs seL4 Foundation
mach/zynq/axi_uartlite.c UART serial driver to the AXI UART lite device on ZYNQ SoCs Suppored on ZYNQ SoCs seL4 Foundation
mach/nvidia/serial.c Serial drivers for the UART serial devices on the NVIDIA SoCs Supported on the NVIDIA SoCs seL4 Foundation

Timer

Components Description Status Maintained by
arch/arm/generic_timer.c Arm generic timer driver. Should be used for debugging or development configurations only as register access is global. Requires configuring seL4 to make the Physical timer registers available to user level. seL4 Foundation
plat/rockpro64/timer.c rockchip,rk3399-timer driver Supported on rockpro64 platform seL4 Foundation
plat/bcm2837/spt.c rpi3 spt timer driver. The timer is based on a SP804 timer with some modifications. Supported on rpi3 platform seL4 Foundation
plat/bcm2837/system_timer.c rpi3 system timer driver. Supported on rpi3 platform seL4 Foundation
plat/odroidc2/meson_timer.c odroidc2 meson timer implementation Supported on odroidc2 platform seL4 Foundation
plat/am335x/timer.c am335x ti,am335x-timer driver for DMTimer Supported on am335x platforms. seL4 Foundation
plat/fvp/sp804.c fvp arm,sp804 timer driver This driver is a copy-paste from the sp804 driver for the hikey platform. They should be merged. seL4 Foundation
plat/hikey/rtc.c hikey arm,pl031 RTC driver Supported on Hikey platform. Could likely be made available for any platform. seL4 Foundation
plat/hikey/dmt.c hikey arm,sp804 timer driver Supported on Hikey platform. Could likely be made available for any platform. seL4 Foundation
plat/apq8064/timer.c apq8064 timer driver Supported on apq8064 platform. (Platform is currently unmaintained) seL4 Foundation
plat/hifive/pwm.c hifive sifive,pwm0 timer driver Supported on hifive platform seL4 Foundation
plat/pc99/pit.c PIT driver for the PIT (Programmable Interval Timer) on the pc99 platform active seL4 Foundation
plat/pc99/rtc.c RTC driver for the RTC on the pc99 platform Supported on pc99 platform seL4 Foundation
plat/pc99/hpet.c HPET driver for the HPET (High Precision Event Timer) device on the pc99 platform Supported on pc99 platform seL4 Foundation
mach/omap/gpt.c GPT driver for the GPT timers in the OMAP SoCs Supported on OMAP SoCs seL4 Foundation
mach/imx/epit/epit.c EPIT driver for the EPIT timers in the i.MX SoCs Supported on i.MX SoCs seL4 Foundation
mach/imx/gpt.c GPT driver for the GPT timers in the i.MX SoCs Supported on i.MX SoCs seL4 Foundation
mach/exynos/clock/exynos_common_clock.c Exynos platform-common functions to manipulate the clock device in the Exynos SoCs Supported on Exynos SoCs seL4 Foundation
mach/exynos/clock/exynos_5422_clock.c Exynos5422 platform-specific functions to manipulate the clock device in the Exynos5422 SoC Supported on Exynos SoCs seL4 Foundation
mach/exynos/clock.h Clock subsystem driver for the clock controller in the Exynos SoCs Supported on Exynos SoCs seL4 Foundation
mach/exynos/pwm.c PWM drivers for the PWM timers in the Exynos SoCs Supported on Exynos SoCs seL4 Foundation
mach/zynq/timer.c TTC driver for the TTC timers in the ZYNQ SoCs Supported on ZYNQ SoCs seL4 Foundation
mach/nvidia/timer.c Timer drivers for the timers on the NVIDIA SoCs Supported on the NVIDIA SoCs seL4 Foundation

Clock

Components Description Status Maintained by
plat/zynq7000/clock.c zynq7000 clock subsystem driver Supported on zynq7000 platform. seL4 Foundation
plat/exynos5/clock.c exynos5 clock subsystem driver Supported on exynos5 platform. seL4 Foundation
plat/tk1/clock.c tk1 nvidia,tegra124-car clock subsystem driver Supported on tk1 platform. seL4 Foundation
plat/exynos4/clock.c exynos4 clock subsystem driver Supported on exynos4 platform. seL4 Foundation
plat/apq8064/clock.c apq8064 qcom,gcc-apq8064 clock subsystem driver Supported on apq8064 platform. (Platform is currently unmaintained) seL4 Foundation
plat/omap3/clock.c omap3 ti,omap3-cm clock controller driver Non-functional skeleton implementation, supported on omap3 platform seL4 Foundation
plat/imx6/clock.c i.MX6 fsl,imx6q-ccm clock subsystem driver Supported on sabre platform seL4 Foundation
src/plat/tx2/clock_bindings.c libplatsupport clock ID to TX2 BPMP clock ID bindings Supported on tx2 platform seL4 Foundation
src/plat/tx2/clock_bindings.c Clock driver for the TX2 CAR (Clock And Reset) controller which relies on libtx2bpmp Supported on the tx2 platform seL4 Foundation

I2C

Components Description Status Maintained by
arch/arm/i2c_bitbang.c Transforms a GPIO interface into an I2C bitbang interface Currently used by libusbdrivers (but libusbdrivers itself isn't heavily used) seL4 Foundation
plat/am335x/i2c.c am335x ti,omap4-i2c driver for I2C. Supported on am335x platforms. seL4 Foundation
plat/tk1/i2c.c tk1 nvidia,tegra124-i2c I2C driver Supported on tk1 platform seL4 Foundation
plat/imx6/i2c.c i.MX6 fsl,imx6q-i2c driver I2C Supported on sabre platform seL4 Foundation
mach/exynos/i2c.c I2C driver for the I2C devices in the Exynos SoCs Supported on the Exynos SoCs seL4 Foundation

Pinmux

Components Description Status Maintained by
plat/tk1/mux.c tk1 nvidia,tegra124-pinmux pinmux driver Supported on tk1 platform seL4 Foundation
plat/omap3/mux.c omap3 ti,omap3-padconf pin controller driver Non-functional skeleton implementation, supported on omap3 platform seL4 Foundation
plat/imx6/mux.c i.MX6 fsl,imx6q-iomuxc IO MUX driver Supported on sabre seL4 Foundation
mach/exnyos4/mux.c Pinctrl configurations for the Exynos4xxx SoCs Supported on the Exynos4xxx SoCs seL4 Foundation
mach/exynos5/mux.c Pinctrl configurations for the Exynos5xxx SoCs Supported on the Exynos5xxx SoCs seL4 Foundation
mach/exynos/mux.c Pinctrl driver for the pinctrl device in the Exynos SoCs Supported on the Exynos SoCs seL4 Foundation
mach/exynos/ltimer.c ltimer implementation for the Exynos platforms using the PWM timers Supported on the Exynos SoCs seL4 Foundation
mach/zynq/mux.c Pinmux drivers for the pin controller in the ZYNQ SoCs Non-functional skeleton implementation, supported on ZYNQ SoCs seL4 Foundation
src/plat/tx2/mux.c Pin controller driver for the TX2 MUX based off on NVIDIA's L4T implementation Supported on the tx2 platform seL4 Foundation

Reset

Components Description Status Maintained by
plat/imx6/src.c i.MX6 fsl,imx6q-src reset controller driver Supported on sabre platform seL4 Foundation
src/plat/tx2/reset_bindings.c libplatsupport reset ID to TX2 BPMP reset ID bindings Supported on the tx2 platform seL4 Foundation
src/plat/tx2/reset.c Reset driver for the TX2 CAR (Clock And Reset) controller which relies on libtx2bpmp Supported on the tx2 platform seL4 Foundation

GPIO

Components Description Status Maintained by
plat/tk1/gpio.c tk1 nvidia,tegra124-gpio GPIO driver Supported on i2c platform. seL4 Foundation
plat/imx6/gpio.c i.MX6 fsl,imx6q-gpio GPIO driver Supported on sabre platform seL4 Foundation
src/plat/tx2/gpio.c GPIO driver for the TX2 GPIO controller based off on U-Boot's implementation Supported on the tx2 platform seL4 Foundation

ltimer

Components Description Status Maintained by
arch/arm/generic_ltimer.c ltimer implementation for Arm generic timer physical timer. Should be used for debugging or development configurations only as register access is global Requires configuring seL4 to make the Physical timer registers available to user level. seL4 Foundation
local_time_manager.c Uses an ltimer to provide timeout multiplexing across several clients Requires ltimer implementation for the target platform. seL4 Foundation
plat/rockpro64/ltimer.c rockpro64 ltimer implementation using 2 rk3399-timers Supported on rockpro64 platform seL4 Foundation
plat/bcm2837/ltimer.c rpi3 ltimer implementation using the system timer and spt timer Supported on rpi3 platform seL4 Foundation
plat/odroidc2/ltimer.c odroidc2 ltimer implementation using the meson timer Supported on odroidc2 platform seL4 Foundation
plat/am335x/ltimer.c am335x ltimer implementation using 2 DMTimers Supported on am335x platforms. seL4 Foundation
plat/fvp/ltimer.c fvp ltimer implementation using 2 sp804 timers Supported on fvp platform. seL4 Foundation
plat/hikey/ltimer.c hikey ltimer implementation using 2 sp804 timers Supported on hikey platform. seL4 Foundation
plat/hifive/ltimer.c ltimer implementation for the hifive platform using two PWM timers Supported on hifive platform seL4 Foundation
plat/pc99/ltimer.c ltimer implementation for the pc99 platform using either PIT or HPET timers Supported on pc99 platform seL4 Foundation
mach/imx/ltimer.c ltimer implementation for the i.MX platforms using a combination of GPT and EPIT timers Supported on i.MX SoCs seL4 Foundation
mach/zynq/ltimer.c ltimer implementation for the ZYNQ platforms using TTC timers Supported on ZYNQ SoCs seL4 Foundation
mach/nvidia/ltimer.c ltimer implementation for the NVIDIA platforms using the NVIDIA timers Supported on the NVIDIA SoCs seL4 Foundation

ethernet

Components Description Status Maintained by
src/pico_dev_eth.c Ethernet device interface to connect with the PicoTCP TCP/IP stack Supported seL4 Foundation
src/lwip.c Ethernet device interface to connect with the lwIP TCP/IP stack Deprecated in favour of the PicoTCP Ethernet device interface seL4 Foundation
src/plat/am335x/* Ethernet driver for the am335x platform Bitrotted, based off the lwIP stack seL4 Foundation
src/plat/imx6/* Ethernet driver for the i.MX6 platform based off on U-Boot's implementation Supported on the sabre platform seL4 Foundation
src/plat/pc99/* Ethernet driver for the e1000 Ethernet devices Supported on pc99 platform seL4 Foundation
src/plat/tx2/* Ethernet driver for the TX2 platform based off on U-Boot's implementation Supported on the tx2 platform seL4 Foundation
src/plat/zynq700/* Ethernet driver for the zynq7000 platform based off on U-Boot's implementation Supported on the zynq7000 platform Dornerworks

Other

Components Description Status Maintained by
arch/x86/delay.c x86 busy wait delay driver by spinning on tsc value Supported on x86 but currently unused by anything. seL4 Foundation
arch/x86/tsc.c Calculates tsc frequency using HPET or PIT Supported on x86. It may be better to use the tsc_freq Bootinfo field that seL4 provides. seL4 Foundation
arch/arm/delay.c arm busy wait delay driver by repeatedly performing no-op instructions Supported on arm but currently relies on each instruction taking a constant amount of time seL4 Foundation
arch/arm/dma330.c ARM PL-330 (DMA-330) DMA controller Unused currently seL4 Foundation
plat/zynq7000/devcfg.c devcfg (Device configuration Interface) zynq7000 driver Supported only for zynq7000 platform. Only functionality is mapping registers and providing a reference. seL4 Foundation
plat/zynq7000/tmu.c Temperature sensor driver for zynq7000 tmu. Supported on zynq7000 platform. seL4 Foundation
plat/zynq7000/xadc.c zynq7000 XADC driver Supported on zynq7000 platform. Currently only used to read values from a temperature monitoring unit. seL4 Foundation
plat/zynq7000/src.c zynq7000 System Level Control Registers driver Supported on zynq7000 platform. Currently used to unlock clock and reset registers only. seL4 Foundation
plat/exynos5/sysreg.c exynos5 samsung,exynos5-sysreg system control driver Supported on exynos5 platforms. Currently can only be used to enable power for USB PHYs. seL4 Foundation
plat/tk1/spi.c tk1 nvidia,tegra124-spi SPI driver Supported on tk1 platform. seL4 Foundation
plat/exynos4/src.c exynos4 samsung,exynos4-sysreg system control driver Supported on exynos4 platforms. Currently can only be used to enable power for USB PHYs. seL4 Foundation
mach/omap/ltimer.c ltimer implementation for the OMAP platforms using GPT timers Supported on OMAP SoCs seL4 Foundation
mach/exynos/tmu.c TMU driver for the TMU (Thermal Management Unit) device in the Exynos SoCs Supported on Exynos SoCs seL4 Foundation
mach/exynos/pmic.c PMIC driver for the PMIC (Power Management IC) device in the Exynos SoCs Supported on the Exynos SoCs seL4 Foundation
mach/exynos/pmic_rtc.c RTC driver for the RTC located inside the PMIC device in the Exynos SoCs Supported on the Exynos SoCs seL4 Foundation
mach/exnyos/irq_combiner.c IRQ combiner driver for the IRQ combiner device in the Exynos SoCs Supported on the Exynos SoCs seL4 Foundation
src/helpers.c Helper functions for the Ethernet drivers in libethdrivers Supported seL4 Foundation
src/bpmp.c BPMP driver for the BPMP (Boot and Power Management Processor) co-processor on the TX2 based off on U-Boot's implementation Supported on the tx2 platform seL4 Foundation
src/hsp.c HSP driver for the HSP (Hardware Synchronisation Primitives) module on the TX2 Supported on the tx2 platform seL4 Foundation
src/ivc.c IVC implementation for the IVC (Inter-VM Communication) protocol used for communicating with the BPMP Supported on the tx2 platform seL4 Foundation