
[ Note: some backends have been moved to other packages or have been
        factored out to separate packages to break dependency loops. ]


This directory contains the libc backends. Each backend shall provide
just some functionality (like io or memory management) so that
different backends can be combined.


startup / shutdown
==================

These backends provide the functionality to startup applications and
to shut them down (things that need to be done before main() and after
exit(), abort() and return in main()).

 * l4env_start_stop
 * l4_start_stop


memory managment
================

These are responsible for providing memory.

 * simple_mem implements functions at mmap level, mostly translating
   requests to dm_phys requests. Every single mmap call will be
   forwarded to dm_phys.

 * buddy_slab_mem is a more complex memory backend as it provides own
   malloc & co. It uses no mmap as backend but replaces the
   dietlibc-internal malloc.

It should be possible and might be necessary to use both backends at
the same time, as mmap is used in the dietlibc internally instead of
malloc.


io
==

 * minimal_io provides a minimal set of backend functions to use
   printf and similar output, that is write() to fds 1 and 2 and a
   dummy seek on fds 0, 1 and 2.  It uses the kernel debugger for its
   outout.

 * minimal_log_io, like minimal_io, but uses the logserver for its
   output.  This results in better output formating than with plain
   minimal_io but requires the log_server for synchronized output and
   loglib.

 * io is currently in heavy development and provides the functionality
   to use local file descriptors, to translate them to remote servers
   and so on. io shall implement nearly the whole posix-io api and
   forward the calls to remote servers. Additionally io will contain
   support for a local namespace overlay to implement some filesystem
   functionality in a local lib. Furthermore it will be necessary to
   have a sort of function pointer table to connect to servers using a
   different api. A local lib will have to translate the calls and its
   functions must be inserted to the function pointer table at open()
   or at similar calls (socket, dup, ...).

 * Something similar is needed for network stuff and maybe other
   things too (currently in progress).


other
=====

There are now solutions for time, select, syslog, and sleep.  If in
doubt browse the local subdirs in dietlibc/lib/backends.
