1 /*!\mainpage DDE Concepts and implementation
14 /** \page p_overview Overview
16 The Device Driver Environment (DDE) is a framework for incorporating
17 legacy device drivers into DROPS. It consists of two parts:
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
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
30 /** \page p_ddekit The DDEKit
32 This page gives an overview of the DDEKit.
34 \section s_ddekit_layout DDEKit subsystems
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.
41 A detailed description can be found in \ref DDEKit_threads
43 \subsection sub_memory Memory
46 \subsection sub_irq Interrupts
48 \subsection sub_iomem IO-Ports and IO memory
50 \subsection sub_sync Synchronization
51 DDEKit provides synchronization mechanisms in form of locks (mutexes),
52 semaphores and conditional variables. See \ref DDEKit_synchronization.
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.
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.
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.
75 /** \page p_implement DDE Implementations
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
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
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>
92 /** \page p_refs References
93 \section drivers Device Drivers in L4
95 <li>Christian Helmuth: <a href="http://os.inf.tu-dresden.de/papers_ps/helmuth-diplom.pdf">
96 <i>"Generische Portierung von Linux-Gerä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>Übertragung des Device-Driver-Environment-Ansatzes auf
100 Subsysteme des BSD-Betriebssystemkerns</i> </a></li>
103 \section linux26 Linux 2.6 device drivers
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
109 <li><a href="http://ezs.kr.hsnr.de/TreiberBuch/html/index.html">
110 Linux Gerätetreiber entwickeln</a></li>
114 /** \page p_credits Credits
115 People involved (ch12, tf13, bjoernd)