Omega0 - DROPS Interrupt Service

Brief description

The Omega0 package contains a standalone implementation of the Omega0 server. See the Omega0 paper Omega0: A portable interface to interrupt hardware for L4 systems for an Omega0 interface specification. The l4io package sources this package for its multi-server including Omega0.

Client-Server communication

Please see the libomega0.a - Omega0 client API library section.

Later changes to the original specification

Automatic consume

A client can signal that it does *not know* if it consumed the interrupt. This is important for Linux-drivers. The client signals that it does not know if it consumed this interrupt by doing a wait-request for the next interrupt without the consume-bit set.

If all clients that were signalled by Omega0 are waiting for the next interrupt, it is assumed that one of them consumed the irq, and the irq is automatically consumed by Omega0. If one client signals that it consumed the irq, the irq is consumed immediately. Each irq is consumed only once.

Automatic consume requires all clients to either issue a wait-request to the next interrupt or to issue a consume-request, or both. It is not allowed to silently ignore an irq and to something else, even if the irq was for another device.

This behaviour is enabled by setting the OMEGA0_STRATEGY_AUTO_CONSUME-define in config.h in the server/src dir.

Jork Loeser

Omega0 management thread

The mention of `local thread 0 of the Omega0 task' in section 3.4 of the specification as the `all RPCs except request RPC' partner is to restrictive.

The `management thread' of the Omega0 task is registered at the name service and should be the addressed by all RPCs except the `request' RPC.

Christian Helmuth

Generated on Wed Apr 11 06:38:07 2012 for Omega0 DROPS Interrupt Service by  doxygen 1.5.6