/* vi:ft=c */
/**

\page l4re_servers L4Re Servers
\brief Here you shall find a tight overview over the standard services
       running on Fiasco.OC and L4Re.

\section l4re_sigma0_overwview Sigma0, the Root Pager

Sigma0 is a special server running on L4 because it is responsible
of resolving page faults for the root task, the first useful task on
L4Re.  Sigma0 can be seen as part of the kernel, however it runs in
unprivileged mode.  To run something useful on Fiasco.OC you usually
need to run Sigma0, nevertheless it is possible to replace Sigma0
by a different implementation.


\section l4re_moe_intro Moe, the Root Task

Moe is our implementation of the L4 root task that is responsible for
bootstrapping the system, and to provide basic resource management services
to the applications on top.  Therefore Moe provides L4Re resource management
an multiplexing services:
\li \b Memory in the form of memory allocators (L4Re::Mem_alloc, L4::Factory)
    and data spaces (L4Re::Dataspace)
\li \b Cpu in the form of basic scheduler objects (L4::Scheduler)
\li \b Vcon multiplexing for debug output (output only)
\li \b Virtual \b memory \b management for applications, L4Re::Rm

Moe further provides an implementation of L4Re name spaces (L4Re::Namespace),
which are for example used to provide a read only directory of all multi-boot
modules.  In the case of a boot loader, like grub that enables a VESA frame
buffer, there is also a single instance of an L4Re graphics session
(L4Re::Goos).

To start the system Moe starts a single ELF program, this init process.  The
init process (usually Ned, see the next section) gets access to all resources
managed by Moe and to the Sigma0 root pager interface.

For more details see \subpage l4re_servers_moe "Moe, the Root-Task".


\section l4re_ned_intro Ned, the Default Init Process

To keep the root task free from complicated scripting engines and to avoid
circular dependencies in application startup (that could lead to dead locks)
the configuration and startup of the real system is managed by an extra task,
the init process.

Ned is such an init process that allows system configuration via Lua scripts.

For more information see \subpage l4re_servers_ned "Ned".


\section l4re_io_intro Io, the Platform and Device Resource Manager

Because all peripheral management of Fiasco.OC is done in user-level
applications, there is the need to have a centralized management of
the resources belonging to the platform and to peripheral devices.

This is the job of Io.  Io provides portable abstractions for iterating and
accessing devices and their resources (IRQ's, IO Memory...), as well as
delegating access to those resources to other applications (e.g., device
drivers).

For more details see \subpage io "Io, the Io Server".


\section l4re_mag_intro Mag, the GUI Multiplexer

Our default multiplexer for the graphics hardware is Mag.  Mag is a
Nitpicker (TODO: ref) derivate that allows secure multiplexing of the
graphics and input hardware among multiple applications and multiple complete
windowing environments.

\todo Add some Nitpicker reference


\section l4re_fbdrv_intro fb-drv, the Low-Level Graphics Driver

The fb-drv server provides low-level access and initialization of various
graphics hardware.  It has support for running VESA BIOS calls on Intel x86
platforms, as well as support for various ARM display controllers.
\em fb-drv, provides a single instance of the L4Re::Goos interface and can
serve as a back end for the Mag server, in particular, if there is no graphics
support in the boot loader.


\section l4re_rtc_intro Rtc, the Real-Time Clock Server

Rtc is a simple multiplexer for real-time clock hardware on your platform.


*/
