Zephyr Project API 3.7.0
A Scalable Open Source RTOS
|
Software-managed ISR table. More...
#include <zephyr/device.h>
#include <zephyr/sys/iterable_sections.h>
#include <zephyr/types.h>
#include <zephyr/toolchain.h>
#include <zephyr/sys/util.h>
Go to the source code of this file.
Macros | |
#define | INTC_BASE_ISR_TBL_OFFSET(node_id) Z_SW_ISR_TBL_KCONFIG_BY_ALVL(DT_INTC_GET_AGGREGATOR_LEVEL(node_id)) |
Get an interrupt controller node's level base ISR table offset. | |
#define | INTC_INST_ISR_TBL_OFFSET(inst) (INTC_BASE_ISR_TBL_OFFSET(DT_DRV_INST(inst)) + (inst * CONFIG_MAX_IRQ_PER_AGGREGATOR)) |
Get the SW ISR table offset for an instance of interrupt controller. | |
#define | INTC_CHILD_ISR_TBL_OFFSET(node_id) |
Get the SW ISR table offset for a child interrupt controller. | |
#define | IRQ_PARENT_ENTRY_DEFINE(_name, _dev, _irq, _offset, _level) |
Register an interrupt controller with the software ISR table. | |
#define | ISR_FLAG_DIRECT BIT(0) |
This interrupt gets put directly in the vector table. | |
#define | IRQ_TABLE_SIZE (CONFIG_NUM_IRQS - CONFIG_GEN_IRQ_START_VECTOR) |
Software-managed ISR table.
Data types for a software-managed ISR table, with a parameter per-ISR.
#define INTC_BASE_ISR_TBL_OFFSET | ( | node_id | ) | Z_SW_ISR_TBL_KCONFIG_BY_ALVL(DT_INTC_GET_AGGREGATOR_LEVEL(node_id)) |
Get an interrupt controller node's level base ISR table offset.
node_id | node identifier of the interrupt controller |
CONFIG_2ND_LVL_ISR_TBL_OFFSET
if node_id is a second level aggregator, CONFIG_3RD_LVL_ISR_TBL_OFFSET
if it is a third level aggregator #define INTC_CHILD_ISR_TBL_OFFSET | ( | node_id | ) |
Get the SW ISR table offset for a child interrupt controller.
This macro is a alternative form of the INTC_INST_ISR_TBL_OFFSET
. This is used by pseudo interrupt controller devices that are child of a main interrupt controller device.
node_id | node identifier of the child interrupt controller |
#define INTC_INST_ISR_TBL_OFFSET | ( | inst | ) | (INTC_BASE_ISR_TBL_OFFSET(DT_DRV_INST(inst)) + (inst * CONFIG_MAX_IRQ_PER_AGGREGATOR)) |
Get the SW ISR table offset for an instance of interrupt controller.
inst | DT_DRV_COMPAT interrupt controller driver instance number |
#define IRQ_PARENT_ENTRY_DEFINE | ( | _name, | |
_dev, | |||
_irq, | |||
_offset, | |||
_level | |||
) |
Register an interrupt controller with the software ISR table.
_name | Name of the interrupt controller (must be unique) |
_dev | Pointer to the interrupt controller device instance |
_irq | Interrupt controller IRQ number |
_offset | Software ISR table offset of the interrupt controller |
_level | Interrupt controller aggregator level |
#define IRQ_TABLE_SIZE (CONFIG_NUM_IRQS - CONFIG_GEN_IRQ_START_VECTOR) |
#define ISR_FLAG_DIRECT BIT(0) |
This interrupt gets put directly in the vector table.