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()) throw () |
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()) throw () |
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()) throw () |
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()) throw () |
Mask an IRQ line. More... | |
l4_msgtag_t | set_mode (unsigned irqnum, l4_umword_t mode, l4_utcb_t *utcb=l4_utcb()) throw () |
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()) throw () |
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 Irq_eoi ::__Iface_list > | __Iface_list |
The list of all RPC interfaces provided directly or through inheritance. | |
![]() | |
L4::Cap< Class > | c () const |
Get the capability to ourselves. | |
![]() | |
static void | __check_protocols__ () |
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:
|
inline |
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 310 of file irq.
References L4::Cap_base::cap(), L4::Kobject::cap(), l4_icu_bind_u(), L4_ICU_OP_BIND, and L4_RPC_NF_OP.
Referenced by L4Re::Util::Event_t< PAYLOAD >::init().
|
inline |
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 341 of file irq.
References L4::Kobject::cap(), l4_icu_info_u(), L4_ICU_OP_INFO, L4_ICU_OP_MSI_INFO, L4_INLINE_RPC_OP, L4_RPC_NF_OP, and l4_utcb().
|
inline |
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 384 of file irq.
References L4::Kobject::cap(), l4_icu_mask_u(), L4_ICU_OP_MASK, L4_ICU_OP_UNMASK, L4_RPC_NF_OP, and L4::Irq_eoi::unmask().
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. |
|
inline |
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 406 of file irq.
References L4::Kobject::cap(), L4_ICU_OP_SET_MODE, l4_icu_set_mode_u(), and L4_RPC_NF_OP.
|
inline |
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 326 of file irq.
References L4::Cap_base::cap(), L4::Kobject::cap(), L4_ICU_OP_UNBIND, l4_icu_unbind_u(), and L4_RPC_NF_OP.