|
L4Re - L4 Runtime Environment
|
Inheritance diagram for L4::Icu:
Collaboration diagram for L4::Icu: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... | |
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< Icu, Irq_eoi, L4_PROTO_IRQ, Type_info::Demand_t< 1 > > | |
| 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. | |
Protected Member Functions inherited from L4::Kobject_t< Icu, Irq_eoi, L4_PROTO_IRQ, Type_info::Demand_t< 1 > > | |
| L4::Cap< Class > | c () const |
| Get the capability to ourselves. | |
Static Protected Member Functions inherited from L4::Kobject_t< Icu, Irq_eoi, L4_PROTO_IRQ, Type_info::Demand_t< 1 > > | |
| 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().
Here is the call graph for this function:
Here is the caller graph for this function:
|
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().
Here is the call graph for this function:
|
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().
Here is the call graph for this function:| 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.
Here is the call graph for this function:
|
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.
Here is the call graph for this function: