libsel4utils

libsel4utils provides OS-like utilities for building benchmarks and applications on seL4. Although the library attempts to be policy agnostic, some decisions must be made.

This library is intended to be used to quickly get tests, benchmarks and prototypes off the ground with minimal effort. It's meant to contain commonly useful stuff, that will be actively maintained. It can also be used as a reference for ‘how-to’ implement OS mechanisms on seL4.

Utilities provided by this library:

  • threads
  • processes
  • elf loading
  • virtual memory management
  • stack switching
  • debugging tools

No allocator is provided, although any allocator that implements the seL4 vka interface can be used (we recommend libsel4allocman).

Dependencies

libsel4utils depends on libsel4vka, libsel4vspace, libutils, libelf, libcpio, libsel4.

Repository overview

include/sel4utils:

  • elf.h -- elf loading.
  • mapping.h -- page mapping.
  • process.h -- process creation, deletion.
  • profile.h -- profiling.
  • strerror.h -- for printing seL4 error codes.
  • stack.h -- switch to a newly allocated stack.
  • thread.h -- threads (kernel threads) creation, deletion.
  • util.h -- includes utilities from libutils.
  • vspace.h -- virtual memory management (implements vspace interface)
  • vspace_internal.h -- virtual memory management internals, for hacking the above.

arch_include/sel4utils:

  • util.h -- utils to assist in writing arch independent code.

Configuration options

  • SEL4UTILS_STACK_SIZE -- the default stack size to use for processes and threads.
  • SEL4UTILS_CSPACE_SIZE_BITS -- the default cspace size for new processes (threads use the current cspace).