]> rtime.felk.cvut.cz Git - l4.git/blob - l4/pkg/dde/doc/dde.dox
Inital import
[l4.git] / l4 / pkg / dde / doc / dde.dox
1 /*!\mainpage DDE Concepts and implementation
2  *
3  * \ref p_overview
4  *
5  * \ref p_ddekit
6  *
7  * \ref p_implement
8  *
9  * \ref p_refs
10  *
11  * \ref p_credits
12  */
13
14 /** \page p_overview Overview
15
16   The Device Driver Environment (DDE) is a framework for incorporating
17   legacy device drivers into DROPS. It consists of two parts:
18   <ul>
19     <li>\ref p_ddekit provides a basic set of functions that are
20           typically needed by drivers, such as threading, IRQs, PCI access
21           and so on. Its purpose is to decouple the OS-dependent code from
22           the L4 code.</li>
23     <li>An OS-dependent part such as DDELinux2.6 implements an environment
24         for drivers from a certain legacy OS. It maps the legacy OS's functions
25         to the DDEKit.</li>
26   </ul>
27
28   */
29
30 /** \page p_ddekit The DDEKit
31
32     This page gives an overview of the DDEKit.
33
34     \section s_ddekit_layout DDEKit subsystems
35
36       \subsection sub_threads    Threads
37         The thread subsystem maps legacy OS threads to L4 threads. It
38         contains functions for starting and stopping threads, accessing
39         thread-local storage as well as sleeping.
40
41         A detailed description can be found in \ref DDEKit_threads
42
43       \subsection sub_memory     Memory
44         Memory. \todo Krishna
45
46       \subsection sub_irq        Interrupts
47
48       \subsection sub_iomem      IO-Ports and IO memory
49
50       \subsection sub_sync       Synchronization
51         DDEKit provides synchronization mechanisms in form of locks (mutexes),
52         semaphores and conditional variables. See \ref DDEKit_synchronization.
53
54       \subsection sub_pci        PCI access
55         DDEKit provides PCI access functions that are mapped to L4IO. It manages
56         a virtual PCI bus where all hardware devices found at L4IO are chained to.
57         Note that currently it only uses a virtual bus number while slot and function
58         number remain unchanged. This may lead to problems if you have a system where
59         two devices with the same slot and fn numbers are attached to different busses.
60
61         See \ref DDEKit_pci.
62
63       \subsection sub_time       Timers
64         DDEKit provides a generic timer implementation that enables users
65         to execute a function with some arguments after a certain period
66         of time. DDEKit therefore starts a timer thread that executes these
67         functions and keeps track of the currently running timers.
68
69       \subsection sub_util       Utilities
70         DDEKit also provides utility functions. \ref ddekit_printf is used for
71         printing data, \ref Assert can be used to insert assertions into code
72         and \ref ddekit_panic enters the kernel debugger. See \ref DDEKit_util.
73   */
74
75 /** \page p_implement DDE Implementations
76
77     Based on DDEKit one can implement OS-specific device driver frameworks. Currently,
78     three of those are available in L4, however only one of them is part of the DDE
79     package.
80
81     <ul>
82       <li><b>DDE Linux 2.4</b> was implemented by Christian Helmuth way before DDEKit 
83         and supports Linux 2.4 device drivers.</li>
84       <li><b>DDE FreeBSD</b> has been implemented by Thomas Friebel. The DDEKit was
85         initiated by this project. DDEFreeBSD still needs to be incorporated into
86         the DDE package.</li>
87       <li><b>DDE Linux 2.6</b> was implemented by Christian Helmuth and Bjoern Doebel
88         on top of the DDEKit. It is part of the DDE package.</li>
89     </ul>
90   */
91
92 /** \page p_refs References
93     \section drivers    Device Drivers in L4
94      <ul>
95       <li>Christian Helmuth: <a href="http://os.inf.tu-dresden.de/papers_ps/helmuth-diplom.pdf">
96           <i>"Generische Portierung von Linux-Ger&auml;tetreibern auf die 
97           DROPS-Architektur"</i></a></li>
98       <li>Thomas Friebel: <a href="http://os.inf.tu-dresden.de/papers_ps/friebel-diplom.pdf">
99           <i>&Uuml;bertragung des Device-Driver-Environment-Ansatzes auf 
100           Subsysteme des BSD-Betriebssystemkerns</i> </a></li>
101      </ul>
102
103     \section linux26    Linux 2.6 device drivers
104      <ul>
105       <li><a href="http://lwn.net/Articles/driver-porting/">LWN.net Linux 2.6
106         porting guide</a></li>
107       <li><a href="http://lwn.net/Kernel/LDD3/">Linux Device Drivers, 3rd
108         Edition</a></li>
109       <li><a href="http://ezs.kr.hsnr.de/TreiberBuch/html/index.html">
110         Linux Ger&auml;tetreiber entwickeln</a></li>
111      </ul>
112   */
113
114 /** \page p_credits Credits
115     People involved (ch12, tf13, bjoernd)
116   */