Loading...
Searching...
No Matches
icu.h File Reference
Base API

Interrupt controller. More...

`#include <l4/sys/kernel_object.h>`
`#include <l4/sys/ipc.h>`
Include dependency graph for icu.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

## Data Structures

struct | l4_icu_info_t
| Info structure for an ICU. More...
struct | l4_icu_msi_info_t
| Info to use for a specific MSI. More...

## Typedefs

typedef struct l4_icu_info_t | l4_icu_info_t
| Info structure for an ICU.
typedef struct l4_icu_msi_info_t | l4_icu_msi_info_t
| Info to use for a specific MSI.

## Enumerations

enum | L4_icu_flags { L4_ICU_FLAG_MSI }
| Flags for IRQ numbers used for the ICU. More...

enum

L4_irq_mode {
L4_IRQ_F_NONE = 0 , L4_IRQ_F_SET_MODE = 0x1 , L4_IRQ_F_LEVEL = 0x2 , L4_IRQ_F_EDGE = 0x0 ,
L4_IRQ_F_POS = 0x0 , L4_IRQ_F_NEG = 0x4 , L4_IRQ_F_BOTH = 0x8 , L4_IRQ_F_LEVEL_HIGH = L4_IRQ_F_SET_MODE | L4_IRQ_F_LEVEL | L4_IRQ_F_POS ,
L4_IRQ_F_LEVEL_LOW = L4_IRQ_F_SET_MODE | L4_IRQ_F_LEVEL | L4_IRQ_F_NEG , L4_IRQ_F_POS_EDGE = L4_IRQ_F_SET_MODE | L4_IRQ_F_EDGE | L4_IRQ_F_POS , L4_IRQ_F_NEG_EDGE = L4_IRQ_F_SET_MODE | L4_IRQ_F_EDGE | L4_IRQ_F_NEG , L4_IRQ_F_BOTH_EDGE = L4_IRQ_F_SET_MODE | L4_IRQ_F_EDGE | L4_IRQ_F_BOTH ,
L4_IRQ_F_MASK = 0xf , L4_IRQ_F_SET_WAKEUP = 0x10 , L4_IRQ_F_CLEAR_WAKEUP = 0x20
}

| Interrupt attributes. More...
enum | L4_icu_opcode { L4_ICU_OP_BIND , L4_ICU_OP_UNBIND , L4_ICU_OP_INFO , L4_ICU_OP_MSI_INFO , L4_ICU_OP_UNMASK , L4_ICU_OP_MASK , L4_ICU_OP_SET_MODE }
| Opcodes to the ICU interface. More...

## Functions

l4_msgtag_t | l4_icu_bind (l4_cap_idx_t icu, unsigned irqnum, l4_cap_idx_t irq) L4_NOTHROW
| Bind an interrupt line of an interrupt controller to an interrupt object.
l4_msgtag_t | l4_icu_bind_u (l4_cap_idx_t icu, unsigned irqnum, l4_cap_idx_t irq, l4_utcb_t *utcb) L4_NOTHROW
| Bind an interrupt line of an interrupt controller to an interrupt object.
l4_msgtag_t | l4_icu_unbind (l4_cap_idx_t icu, unsigned irqnum, l4_cap_idx_t irq) L4_NOTHROW
| Remove binding of an interrupt line from the interrupt controller object.
l4_msgtag_t | l4_icu_unbind_u (l4_cap_idx_t icu, unsigned irqnum, l4_cap_idx_t irq, l4_utcb_t *utcb) L4_NOTHROW
| Remove binding of an interrupt line from the interrupt controller object.
l4_msgtag_t | l4_icu_set_mode (l4_cap_idx_t icu, unsigned irqnum, l4_umword_t mode) L4_NOTHROW
| Set interrupt mode.
l4_msgtag_t | l4_icu_set_mode_u (l4_cap_idx_t icu, unsigned irqnum, l4_umword_t mode, l4_utcb_t *utcb) L4_NOTHROW
| Set interrupt mode.
l4_msgtag_t | l4_icu_info (l4_cap_idx_t icu, l4_icu_info_t *info) L4_NOTHROW
| Get information about the ICU features.
l4_msgtag_t | l4_icu_info_u (l4_cap_idx_t icu, l4_icu_info_t *info, l4_utcb_t *utcb) L4_NOTHROW
| Get information about the ICU features.
l4_msgtag_t | l4_icu_msi_info (l4_cap_idx_t icu, unsigned irqnum, l4_uint64_t source, l4_icu_msi_info_t *msi_info) L4_NOTHROW
| Get MSI info about IRQ.
l4_msgtag_t | l4_icu_msi_info_u (l4_cap_idx_t icu, unsigned irqnum, l4_uint64_t source, l4_icu_msi_info_t *msi_info, l4_utcb_t *utcb) L4_NOTHROW
| Get MSI info about IRQ.
l4_msgtag_t | l4_icu_unmask (l4_cap_idx_t icu, unsigned irqnum, l4_umword_t *label, l4_timeout_t to) L4_NOTHROW
| Unmask an IRQ line.
l4_msgtag_t | l4_icu_unmask_u (l4_cap_idx_t icu, unsigned irqnum, l4_umword_t *label, l4_timeout_t to, l4_utcb_t *utcb) L4_NOTHROW
| Unmask the given interrupt line.
l4_msgtag_t | l4_icu_mask (l4_cap_idx_t icu, unsigned irqnum, l4_umword_t *label, l4_timeout_t to) L4_NOTHROW
| Mask an IRQ line.
l4_msgtag_t | l4_icu_mask_u (l4_cap_idx_t icu, unsigned irqnum, l4_umword_t *label, l4_timeout_t to, l4_utcb_t *utcb) L4_NOTHROW
| Mask an IRQ line.

## Detailed Description

Interrupt controller.

Definition in file icu.h.