Global Requirements

Though the Linux DDE is designed to be highly configurable and each module can be used stand-alone, there are some assumptions resp. requirements what the environment should look like. These are defined in two steps:

  1. Global requirements for all Linux DDE modules defined in this section
  2. Module specific requirements defined in the module specific documentation

Using this approach it should be simple to add new modules or implement parts of the environment independently.

General Environment

Linux DDE was developed for the Common L4 Environment. So strictly spoken any module requires a running L4Env:

For some modules these strict requirements could be avoided by providing features in an emulation implementation but this is out of the scope of Linux DDE.

Global Linux DDE lock

The Linux 2.4 kernel is not preemptible, so if any kernel activity is running on one CPU it is guaranteed to finish before another activity is executed on this CPU. There are two exceptions from this general rule:

  1. Any process level kernel activity may call schedule() to voluntarily release the CPU. The state of the activity can be blocked or non-blocked.
  2. Occuring interrupts are handled immediately at interrupt level (using the current thread) and consequently preempt any running activity. As it is the same thread once the interrupt handling (including pending deferred activities) is finished the preempted activity will be executed, i.e. no scheduling.

Therefore global synchronisation of kernel activities can be done by not calling schedule() in any way and inhibit interrupts. Since disabling interrupts is unacceptable in DROPS (discussed in "Taming Linux" paper) Linux DDE uses the lock based scheme described there.

So calls to cli() and sti() are mapped to routines aquiring and releasing the global interrupt lock irq_lock.

See also:
global.c

L4 Environment I/O Server

Some modules need services provided by the I/O Server. Before using these modules the I/O Server client library - libio - has to be initialized.

A service of the I/O server is a jiffies tick provided via the I/O Info Page (for more details refer to L4Env Generic I/O Reference Manual). Also described there is a solution to put some symbols inside this page at compile time.

For Linux DDE there are 2 relevant symbols inside the Info Page: jiffies and HZ. So if your drivers really need these symbols you could initialize the I/O Server client library before using Linux DDE and use some assembler magic to put your symbols at the right place.


Linux DDE, written by Christian Helmuth  © 2003 Technische Universitaet Dresden