user_libs Project Status

Libraries

util_libs

Components Description Status Maintained by
libcpio A library for parsing files in CPIO format. active Data61
libelf A library for reading ELF files. active Data61
libethdrivers A library for ethernet drivers on selected platforms, supporting lwIP and picoTCP. active Data61
libfdt A library for flat device tree manipulation, ported from linux kernel version: 5.0.6. inactive Data61
liblwip A library for the lwIP, ported from lwip-1.4.1. inactive Data61
libpci A library for PCI drivers. active Data61
libpicotcp A library of picoTCP header files. active Data61
libplatsupport A library of platform support utilities, interfaces for interacting with drivers, timer drivers, serial drivers and clock drivers. active Data61
libutils A library of generic utilities, such as debugging macros and compile time asserts. active Data61

projects_libs

Components Description Status Maintained by
libfdtgen A library for generating flattened device trees which can be passed to virtual machines. active Data61
libjansson The port of Jansson-2.7 to seL4 and the seL4 project build system. inactive Data61
libmsgpack An seL4 build system wrapper to build msgpack-c, a library for dealing with MessagePack data. inactive Data61
libnfs A wrapper for supporting project build for a given network file system implementation. inactive Data61
libplatsupportports A collection of drivers proted from GPL-based sources such as U-Boot and Linux. active Data61
libringbuffer A library of the ring buffer implementation. inactive Data61
libsdhcdrivers A library of the SD card driver. inactive Data61
libtx2bpmp A port of the Tegra186 Boot and Power Management Processor (BPMP) interfaces from U-Boot to seL4. active Data61
libusbdrivers A USB driver. inactive Data61
libvirtqueue A library implementation of a virtqueue inspired from the virtio specification. active Data61
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 Data61

seL4_libs

Components Description Status Maintained by
libsel4allocman An allocator for managing virtual memory, malloc memory and cspaces. active Data61
libsel4bench A library of benchmarking utilities on seL4, such as logging and PMU event counters. active Data61
libsel4debug A library for debugging userspace applications on seL4. active Data61
libsel4muslcsys A library of minimal muslc syscall implementation for seL4. active Data61
libsel4platsupport A wrapper around libplatsupport specificially for seL4. active Data61
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 Data61
libsel4simple An interface which abstracts over the boot environment of a seL4 application. active Data61
libsel4simple-default An implementation of libsel4simple for the master branch of the seL4 kernel. active Data61
libsel4sync A synchronisation library that uses notifications to construct basic locks. active Data61
libsel4test A library for running tests and generating test output in either human readable or xml format. active Data61
libsel4utils A library of OS-like utilities for building benchmarks and applications on seL4. active Data61
libsel4vka An allocation interface for seL4. active Data61
libsel4vspace A virtual memory management interface for seL4. active Data61

seL4_projects_libs

Components Description Status Maintained by
libsel4bga A basic driver for the Bochs Graphics Adaptor, currently only supports the x86 IA32 architecture. inactive Data61
libsel4dma An allocator for managing DMA memory. active Data61
libsel4keyboard A basic keyboard driver. active Data61
libsel4nanopb An interface between seL4 IPC buffers and nanopb. Nanopb is a small code-size Protocol Buffers implementation in ANSI C. active Data61
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 Data61
libsel4vchan A vchan implementation on seL4, which provides communication channels between virtual machines. inactive Data61

libplatsupport

Components

Serial

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

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. Data61
plat/rockpro64/timer.c rockchip,rk3399-timer driver Supported on rockpro64 platform Data61
plat/bcm2837/spt.c rpi3 spt timer driver. The timer is based on a SP804 timer with some modifications. Supported on rpi3 platform Data61
plat/bcm2837/system_timer.c rpi3 system timer driver. Supported on rpi3 platform Data61
plat/odroidc2/meson_timer.c odroidc2 meson timer implementation Supported on odroidc2 platform Data61
plat/am335x/timer.c am335x ti,am335x-timer driver for DMTimer Supported on am335x platforms. Data61
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. Data61
plat/hikey/rtc.c hikey arm,pl031 RTC driver Supported on Hikey platform. Could likely be made available for any platform. Data61
plat/hikey/dmt.c hikey arm,sp804 timer driver Supported on Hikey platform. Could likely be made available for any platform. Data61
plat/apq8064/timer.c apq8064 timer driver Supported on apq8064 platform. (Platform is currently unmaintained) Data61
plat/hifive/pwm.c hifive sifive,pwm0 timer driver Supported on hifive platform Data61
plat/pc99/pit.c PIT driver for the PIT (Programmable Interval Timer) on the pc99 platform active Data61
plat/pc99/rtc.c RTC driver for the RTC on the pc99 platform Supported on pc99 platform Data61
plat/pc99/hpet.c HPET driver for the HPET (High Precision Event Timer) device on the pc99 platform Supported on pc99 platform Data61
mach/omap/gpt.c GPT driver for the GPT timers in the OMAP SoCs Supported on OMAP SoCs Data61
mach/imx/epit/epit.c EPIT driver for the EPIT timers in the i.MX SoCs Supported on i.MX SoCs Data61
mach/imx/gpt.c GPT driver for the GPT timers in the i.MX SoCs Supported on i.MX SoCs Data61
mach/exynos/clock/exynos_common_clock.c Exynos platform-common functions to manipulate the clock device in the Exynos SoCs Supported on Exynos SoCs Data61
mach/exynos/clock/exynos_5422_clock.c Exynos5422 platform-specific functions to manipulate the clock device in the Exynos5422 SoC Supported on Exynos SoCs Data61
mach/exynos/clock.h Clock subsystem driver for the clock controller in the Exynos SoCs Supported on Exynos SoCs Data61
mach/exynos/pwm.c PWM drivers for the PWM timers in the Exynos SoCs Supported on Exynos SoCs Data61
mach/zynq/timer.c TTC driver for the TTC timers in the ZYNQ SoCs Supported on ZYNQ SoCs Data61
mach/nvidia/timer.c Timer drivers for the timers on the NVIDIA SoCs Supported on the NVIDIA SoCs Data61

Clock

Components Description Status Maintained by
plat/zynq7000/clock.c zynq7000 clock subsystem driver Supported on zynq7000 platform. Data61
plat/exynos5/clock.c exynos5 clock subsystem driver Supported on exynos5 platform. Data61
plat/tk1/clock.c tk1 nvidia,tegra124-car clock subsystem driver Supported on tk1 platform. Data61
plat/exynos4/clock.c exynos4 clock subsystem driver Supported on exynos4 platform. Data61
plat/apq8064/clock.c apq8064 qcom,gcc-apq8064 clock subsystem driver Supported on apq8064 platform. (Platform is currently unmaintained) Data61
plat/omap3/clock.c omap3 ti,omap3-cm clock controller driver Non-functional skeleton implementation, supported on omap3 platform Data61
plat/imx6/clock.c i.MX6 fsl,imx6q-ccm clock subsystem driver Supported on sabre platform Data61
src/plat/tx2/clock_bindings.c libplatsupport clock ID to TX2 BPMP clock ID bindings Supported on tx2 platform Data61
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 Data61

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) Data61
plat/am335x/i2c.c am335x ti,omap4-i2c driver for I2C. Supported on am335x platforms. Data61
plat/tk1/i2c.c tk1 nvidia,tegra124-i2c I2C driver Supported on tk1 platform Data61
plat/imx6/i2c.c i.MX6 fsl,imx6q-i2c driver I2C Supported on sabre platform Data61
mach/exynos/i2c.c I2C driver for the I2C devices in the Exynos SoCs Supported on the Exynos SoCs Data61

Pinmux

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

Reset

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

GPIO

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

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. Data61
local_time_manager.c Uses an ltimer to provide timeout multiplexing across several clients Requires ltimer implementation for the target platform. Data61
plat/rockpro64/ltimer.c rockpro64 ltimer implementation using 2 rk3399-timers Supported on rockpro64 platform Data61
plat/bcm2837/ltimer.c rpi3 ltimer implementation using the system timer and spt timer Supported on rpi3 platform Data61
plat/odroidc2/ltimer.c odroidc2 ltimer implementation using the meson timer Supported on odroidc2 platform Data61
plat/am335x/ltimer.c am335x ltimer implementation using 2 DMTimers Supported on am335x platforms. Data61
plat/fvp/ltimer.c fvp ltimer implementation using 2 sp804 timers Supported on fvp platform. Data61
plat/hikey/ltimer.c hikey ltimer implementation using 2 sp804 timers Supported on hikey platform. Data61
plat/hifive/ltimer.c ltimer implementation for the hifive platform using two PWM timers Supported on hifive platform Data61
plat/pc99/ltimer.c ltimer implementation for the pc99 platform using either PIT or HPET timers Supported on pc99 platform Data61
mach/imx/ltimer.c ltimer implementation for the i.MX platforms using a combination of GPT and EPIT timers Supported on i.MX SoCs Data61
mach/zynq/ltimer.c ltimer implementation for the ZYNQ platforms using TTC timers Supported on ZYNQ SoCs Data61
mach/nvidia/ltimer.c ltimer implementation for the NVIDIA platforms using the NVIDIA timers Supported on the NVIDIA SoCs Data61

ethernet

Components Description Status Maintained by
src/pico_dev_eth.c Ethernet device interface to connect with the PicoTCP TCP/IP stack Supported Data61
src/lwip.c Ethernet device interface to connect with the lwIP TCP/IP stack Deprecated in favour of the PicoTCP Ethernet device interface Data61
src/plat/am335x/* Ethernet driver for the am335x platform Bitrotted, based off the lwIP stack Data61
src/plat/imx6/* Ethernet driver for the i.MX6 platform based off on U-Boot's implementation Supported on the sabre platform Data61
src/plat/pc99/* Ethernet driver for the e1000 Ethernet devices Supported on pc99 platform Data61
src/plat/tx2/* Ethernet driver for the TX2 platform based off on U-Boot's implementation Supported on the tx2 platform Data61
src/plat/zynq700/* Ethernet driver for the zynq7000 platform based off on U-Boot's implementation Supported on the zynq7000 platform Data61, 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. Data61
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. Data61
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 Data61
arch/arm/dma330.c ARM PL-330 (DMA-330) DMA controller Unused currently Data61
plat/zynq7000/devcfg.c devcfg (Device configuration Interface) zynq7000 driver Supported only for zynq7000 platform. Only functionality is mapping registers and providing a reference. Data61
plat/zynq7000/tmu.c Temperature sensor driver for zynq7000 tmu. Supported on zynq7000 platform. Data61
plat/zynq7000/xadc.c zynq7000 XADC driver Supported on zynq7000 platform. Currently only used to read values from a temperature monitoring unit. Data61
plat/zynq7000/src.c zynq7000 System Level Control Registers driver Supported on zynq7000 platform. Currently used to unlock clock and reset registers only. Data61
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. Data61
plat/tk1/spi.c tk1 nvidia,tegra124-spi SPI driver Supported on tk1 platform. Data61
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. Data61
mach/omap/ltimer.c ltimer implementation for the OMAP platforms using GPT timers Supported on OMAP SoCs Data61
mach/exynos/tmu.c TMU driver for the TMU (Thermal Management Unit) device in the Exynos SoCs Supported on Exynos SoCs Data61
mach/exynos/pmic.c PMIC driver for the PMIC (Power Management IC) device in the Exynos SoCs Supported on the Exynos SoCs Data61
mach/exynos/pmic_rtc.c RTC driver for the RTC located inside the PMIC device in the Exynos SoCs Supported on the Exynos SoCs Data61
mach/exnyos/irq_combiner.c IRQ combiner driver for the IRQ combiner device in the Exynos SoCs Supported on the Exynos SoCs Data61
src/helpers.c Helper functions for the Ethernet drivers in libethdrivers Supported Data61
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 Data61
src/hsp.c HSP driver for the HSP (Hardware Synchronisation Primitives) module on the TX2 Supported on the tx2 platform Data61
src/ivc.c IVC implementation for the IVC (Inter-VM Communication) protocol used for communicating with the BPMP Supported on the tx2 platform Data61