<!--
    Copyright 2014, NICTA

    This software may be distributed and modified according to the terms of
    the BSD 2-Clause license. Note that NO WARRANTY is provided.
    See "LICENSE_BSD2.txt" for details.

    @TAG(NICTA_BSD)
-->

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 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*:

    * client_server_vspace.h -- a virtual address space that proxies calls between two different 
                                vspaces
    * elf.h -- elf loading.
    * mapping.h -- page mapping.
    * process.h -- process creation, deletion.
    * profile.h -- profiling.
    * sel4_debug.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).

License
========

The files in this repository are release under standard open source licenses.
Please see individual file headers and the `LICENSE_BSD2`.txt file for details.
