L4Re Operating System Framework
Interface and Usage Documentation
|
IRQ multiplexer for shared IRQs. More...
#include <irq>
Public Member Functions | |
l4_msgtag_t | chain (Cap< Triggerable > const &slave, l4_utcb_t *utcb=l4_utcb()) noexcept |
Attach an IRQ to this multiplexer. | |
Public Member Functions inherited from L4::Triggerable | |
l4_msgtag_t | trigger (l4_utcb_t *utcb=l4_utcb()) noexcept |
Trigger the object. | |
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()) noexcept |
Unmask the given interrupt line. | |
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 Base::__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 Base::__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< Class > | c () const noexcept |
Get the capability to ourselves. | |
Protected Member Functions inherited from L4::Kobject_t< Triggerable, Irq_eoi, L4_PROTO_IRQ > | |
L4::Cap< Class > | c () const noexcept |
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__ () noexcept |
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__ () noexcept |
Helper to check for protocol conflicts. | |
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 unmasked.
|
inlinenoexcept |
Attach an IRQ to this multiplexer.
slave | The slave that shall be attached to the master. |
utcb | UTCB to be used for this operation, shall be the UTCB of the calling thread. See l4_utcb. |
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 227 of file irq.
References L4::Cap_base::cap(), and l4_irq_mux_chain_u().