blob: f61a63fe47bba8f911796cbd912204c1279e4891 [file] [log] [blame] [view]
<!--
Copyright 2017, Data61, CSIRO (ABN 41 687 119 230)
SPDX-License-Identifier: CC-BY-SA-4.0
-->
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).