L4Re - L4 Runtime Environment
L4::Irq_mux Struct Reference

IRQ multiplexer for shared IRQs. More...

+ Inheritance diagram for L4::Irq_mux:
+ Collaboration diagram for L4::Irq_mux:

Public Member Functions

l4_msgtag_t chain (Cap< Triggerable > const &slave, l4_utcb_t *utcb=l4_utcb()) throw ()
 Attach an IRQ to this multiplexer. More...
 
- Public Member Functions inherited from L4::Triggerable
l4_msgtag_t trigger (l4_utcb_t *utcb=l4_utcb()) throw ()
 Trigger. More...
 
- Public Member Functions inherited from L4::Irq_eoi
l4_msgtag_t unmask (unsigned irqnum, l4_umword_t *label=0, l4_timeout_t to=L4_IPC_NEVER, l4_utcb_t *utcb=l4_utcb()) throw ()
 Acknowledge the given interrupt line. More...
 

Additional Inherited Members

- Protected Types inherited from L4::Kobject_t< Irq_mux, Triggerable, L4_PROTO_IRQ_MUX >
typedef Irq_mux Class
 The target interface type (inheriting from Kobject_t)
 
typedef Typeid::Iface< PROTO, Irq_mux__Iface
 The interface description for the derived class.
 
typedef Typeid::Merge_list< Typeid::Iface_list< __Iface >, typename Triggerable ::__Iface_list > __Iface_list
 The list of all RPC interfaces provided directly or through inheritance.
 
- Protected Types inherited from L4::Kobject_t< Triggerable, Irq_eoi, L4_PROTO_IRQ >
typedef Triggerable Class
 The target interface type (inheriting from Kobject_t)
 
typedef Typeid::Iface< PROTO, Triggerable__Iface
 The interface description for the derived class.
 
typedef Typeid::Merge_list< Typeid::Iface_list< __Iface >, typename Irq_eoi ::__Iface_list > __Iface_list
 The list of all RPC interfaces provided directly or through inheritance.
 
- Protected Member Functions inherited from L4::Kobject_t< Irq_mux, Triggerable, L4_PROTO_IRQ_MUX >
L4::Cap< Classc () const
 Get the capability to ourselves.
 
- Protected Member Functions inherited from L4::Kobject_t< Triggerable, Irq_eoi, L4_PROTO_IRQ >
L4::Cap< Classc () const
 Get the capability to ourselves.
 
- Static Protected Member Functions inherited from L4::Kobject_t< Irq_mux, Triggerable, L4_PROTO_IRQ_MUX >
static void __check_protocols__ ()
 Helper to check for protocol conflicts.
 
- Static Protected Member Functions inherited from L4::Kobject_t< Triggerable, Irq_eoi, L4_PROTO_IRQ >
static void __check_protocols__ ()
 Helper to check for protocol conflicts.
 

Detailed Description

IRQ multiplexer for shared IRQs.

This interface allows broadcasting of shared IRQs to multiple triggerables. The IRQ multiplexer is responsible for the correct mask and unmask logic for such shared IRQs.

The semantics are that each of the slave IRQs is triggered whenever the multiplexer IRQ is triggered. As shared IRQs are usually level-triggered, the real IRQ source will be masked automatically when an IRQ is delivered and shall be unmasked when all attached slave IRQs are acknowledged.

Definition at line 224 of file irq.

Member Function Documentation

◆ chain()

l4_msgtag_t L4::Irq_mux::chain ( Cap< Triggerable > const &  slave,
l4_utcb_t utcb = l4_utcb() 
)
throw (
)
inline

Attach an IRQ to this multiplexer.

Parameters
slaveThe slave that shall be attached to the master.
utcbUTCB to be used for this operation, usually the UTCB of the calling thread.
Returns
Syscall return tag

The chaining feature of IRQ objects allows to deal with shared IRQs. For chaining IRQs there must be an IRQ multiplexer (Irq_mux) bound to the real IRQ source. This function allows to add slave IRQs to this multiplexer.

Definition at line 239 of file irq.


The documentation for this struct was generated from the following file: