L4Re Operating System Framework
Interface and Usage Documentation
Loading...
Searching...
No Matches
L4::Irq_mux Struct Reference

IRQ multiplexer for shared IRQs. More...

#include <irq>

+ 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()) 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< Classc () const noexcept
 Get the capability to ourselves.
 
- Protected Member Functions inherited from L4::Kobject_t< Triggerable, Irq_eoi, L4_PROTO_IRQ >
L4::Cap< Classc () 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.
 

Detailed Description

IRQ multiplexer for shared IRQs.

Deprecated:
IRQ muxer objects are no longer supported by the kernel.

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.

Definition at line 212 of file irq.

Member Function Documentation

◆ chain()

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

Attach an IRQ to this multiplexer.

Parameters
slaveThe slave that shall be attached to the master.
utcbUTCB to be used for this operation, shall be the UTCB of the calling thread. See l4_utcb.
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 227 of file irq.

References L4::Cap_base::cap(), and l4_irq_mux_chain_u().

+ Here is the call graph for this function:

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