DDE/DDEKit: Difference between revisions

From TUDOS-Wiki
Jump to navigationJump to search
BjoernD (talk | contribs)
BjoernD (talk | contribs)
Line 32: Line 32:




The purpose of DDEKit is to provide a common interface to this functionality in order to ease development of device driver environments for different operating systems.
The purpose of DDEKit is to provide a common interface to this functionality, so that implementing DDEs for different legacy operating systems becomes easier due to code reuse.


== OS-Specific Environments ==
== OS-Specific Environments ==

Revision as of 12:07, 3 April 2008

Overview

Device drivers are an essential element in every operating system, because without them no interaction with the external world is possible. Because of the huge range of available devices, implementing L4 device drivers for even the most common devices on the market would be a tedious job. To circumvent this problem and support a wide range of devices on L4, we designed DDE, the Device Driver Environment. Aim of this project is to provide legacy device driver interfaces, so that the large amount of readily available device drivers for other operating systems (such as Linux and BSD) can be reused on L4 with few effort.

DDE consists of three layers:

  1. DDEKit is a glue layer between the L4Env and the higher device driver layers.
  2. DDEsomeOS implement OS-specific environments for every supported OS.
  3. native device drivers are not modified and simply linked against the DDE/DDEKit libraries and extended with a little server code in order to export their interface to other L4 applications.

DDEKit

Even though running inside different operating system environments, drivers usually make use of a certain functionality. DDEKit provides such functionality and therefore relies on L4Env services being available. The mechanisms implemented by DDEKit are:

  • Device resource management
    • Interrupts
    • I/O ports (x86-specific)
    • I/O memory
    • Access to the PCI config space
  • Memory Management
    • Memory allocation
    • Mapping of virtual to physical addresses
  • Threads
    • Management of threads
    • Synchronization mechanisms
      • Locks
      • Semaphores
      • Condition variables
    • Thread-local storage
  • Utilities
    • Initcalls
    • printf(), panic()


The purpose of DDEKit is to provide a common interface to this functionality, so that implementing DDEs for different legacy operating systems becomes easier due to code reuse.

OS-Specific Environments

DDE/Linux2.6

DDE/FBSD

Applications using DDE/DDEKit

ORe - a software ethernet switch

Windhoek - the L4 block device server