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 |