L4Re – L4 Runtime Environment
|
Data Structures | |
class | Info |
This class encapsulates information about an ICU. More... | |
Public Member Functions | |
l4_msgtag_t | bind (unsigned irqnum, L4::Cap< Triggerable > irq, l4_utcb_t *utcb=l4_utcb()) noexcept |
Bind an interrupt line of an interrupt controller to an interrupt object. More... | |
l4_msgtag_t | unbind (unsigned irqnum, L4::Cap< Triggerable > irq, l4_utcb_t *utcb=l4_utcb()) noexcept |
Remove binding of an interrupt line from the interrupt controller object. More... | |
l4_msgtag_t | info (l4_icu_info_t *info, l4_utcb_t *utcb=l4_utcb()) noexcept |
Get information about the capabilities of the ICU. More... | |
l4_msgtag_t | msi_info (l4_umword_t irqnum, l4_uint64_t source, l4_icu_msi_info_t *msi_info) |
Get MSI info about IRQ. More... | |
l4_msgtag_t | mask (unsigned irqnum, l4_umword_t *label=0, l4_timeout_t to=L4_IPC_NEVER, l4_utcb_t *utcb=l4_utcb()) noexcept |
Mask an IRQ line. More... | |
l4_msgtag_t | set_mode (unsigned irqnum, l4_umword_t mode, l4_utcb_t *utcb=l4_utcb()) noexcept |
Set interrupt mode. More... | |
![]() | |
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 |
Acknowledge the given interrupt line. More... | |
Additional Inherited Members | |
![]() | |
typedef Icu | Class |
The target interface type (inheriting from Kobject_t) | |
typedef Typeid::Iface< PROTO, Icu > | __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. | |
![]() | |
L4::Cap< Class > | c () const noexcept |
Get the capability to ourselves. | |
![]() | |
static void | __check_protocols__ () noexcept |
Helper to check for protocol conflicts. | |
C++ Icu interface.
This class defines the interface for interrupt controllers. It defines functions for binding L4::Irq objects to interrupt lines, as well as functions for masking and unmasking of interrupts.
To setup an interrupt line the following steps are required:
|
inlinenoexcept |
Bind an interrupt line of an interrupt controller to an interrupt object.
irqnum | IRQ line at the ICU. |
irq | IRQ object for the given IRQ line to bind to this ICU. |
utcb | UTCB to be used for this operation, usually the UTCB of the calling thread. |
< 0
indicate an error. A return value of 0
means a direct unmask via the IRQ object using L4::Irq::unmask. A return value of 1
means that the interrupt has to be unmasked via the ICU using L4::Icu::unmask. Definition at line 285 of file irq.
References L4::Cap_base::cap(), L4::Kobject::cap(), and l4_icu_bind_u().
Referenced by L4virtio::Driver::Device::bind_notification_irq(), and L4virtio::Driver::Device::driver_connect().
|
inlinenoexcept |
Get information about the capabilities of the ICU.
[out] | info | Info structure to be filled with information. |
utcb | UTCB to be used for this operation, usually the UTCB of the calling thread. |
Definition at line 320 of file irq.
References L4::Kobject::cap(), and l4_icu_info_u().
|
inlinenoexcept |
Mask an IRQ line.
irqnum | IRQ line at the ICU. |
label | If NULL this function is a send-only message to the ICU. If not NULL this function will enter an open wait after sending the mask message. |
to | The timeout-pair (send and receive) that shall be used for this operation. The receive timeout is used with a non-NULL label only. |
utcb | UTCB to be used for this operation, usually the UTCB of the calling thread. |
Definition at line 363 of file irq.
References L4::Kobject::cap(), and l4_icu_mask_u().
l4_msgtag_t L4::Icu::msi_info | ( | l4_umword_t | irqnum, |
l4_uint64_t | source, | ||
l4_icu_msi_info_t * | msi_info | ||
) |
Get MSI info about IRQ.
irqnum | IRQ line at the ICU. | |
source | Platform dependent requester ID for MSIs. On IA32 we use a 20bit source filter value as described in the Intel IRQ remapping specification. | |
[out] | msi_info | A l4_icu_msi_info_t structure receiving the address and the data value to trigger this MSI. |
|
inlinenoexcept |
Set interrupt mode.
irqnum | IRQ line at the ICU. |
mode | Mode, see L4_irq_mode. |
utcb | UTCB to be used for this operation, usually the UTCB of the calling thread. |
Definition at line 391 of file irq.
References L4::Kobject::cap(), and l4_icu_set_mode_u().
|
inlinenoexcept |
Remove binding of an interrupt line from the interrupt controller object.
irqnum | IRQ line at the ICU. |
irq | IRQ object to remove from the ICU. |
utcb | UTCB to be used for this operation, usually the UTCB of the calling thread. |
Definition at line 303 of file irq.
References L4::Cap_base::cap(), L4::Kobject::cap(), and l4_icu_unbind_u().