Zephyr API Documentation  2.7.0-rc2
A Scalable Open Source RTOS
irq.h File Reference

ARM AArch32 public interrupt handling. More...

#include <irq.h>
#include <sw_isr_table.h>
#include <stdbool.h>

Go to the source code of this file.

Macros

#define DO_TOSTR(s)   #s
 
#define TOSTR(s)   DO_TOSTR(s)
 
#define DO_CONCAT(x, y)   x ## y
 
#define CONCAT(x, y)   DO_CONCAT(x, y)
 
#define IRQ_ZERO_LATENCY   BIT(0)
 
#define ARCH_IRQ_CONNECT(irq_p, priority_p, isr_p, isr_param_p, flags_p)
 
#define ARCH_IRQ_DIRECT_CONNECT(irq_p, priority_p, isr_p, flags_p)
 
#define ARCH_ISR_DIRECT_PM()   do { } while (false)
 
#define ARCH_ISR_DIRECT_HEADER()   arch_isr_direct_header()
 
#define ARCH_ISR_DIRECT_FOOTER(swap)   arch_isr_direct_footer(swap)
 
#define ARCH_ISR_DIRECT_DECLARE(name)
 

Functions

void arch_irq_enable (unsigned int irq)
 
void arch_irq_disable (unsigned int irq)
 
int arch_irq_is_enabled (unsigned int irq)
 
static void arch_isr_direct_header (void)
 
static void arch_isr_direct_footer (int maybe_swap)
 

Detailed Description

ARM AArch32 public interrupt handling.

ARM AArch32-specific kernel interrupt handling interface. Included by arm/arch.h.

Macro Definition Documentation

◆ ARCH_IRQ_CONNECT

#define ARCH_IRQ_CONNECT (   irq_p,
  priority_p,
  isr_p,
  isr_param_p,
  flags_p 
)
Value:
{ \
BUILD_ASSERT(IS_ENABLED(CONFIG_ZERO_LATENCY_IRQS) || !(flags_p & IRQ_ZERO_LATENCY), \
"ZLI interrupt registered but feature is disabled"); \
_CHECK_PRIO(priority_p, flags_p) \
Z_ISR_DECLARE(irq_p, 0, isr_p, isr_param_p); \
z_arm_irq_priority_set(irq_p, priority_p, flags_p); \
}
#define IRQ_ZERO_LATENCY
Definition: irq.h:93
#define IS_ENABLED(config_macro)
Check for macro definition in compiler-visible expressions.
Definition: util_macro.h:101

◆ ARCH_IRQ_DIRECT_CONNECT

#define ARCH_IRQ_DIRECT_CONNECT (   irq_p,
  priority_p,
  isr_p,
  flags_p 
)
Value:
{ \
BUILD_ASSERT(IS_ENABLED(CONFIG_ZERO_LATENCY_IRQS) || !(flags_p & IRQ_ZERO_LATENCY), \
"ZLI interrupt registered but feature is disabled"); \
_CHECK_PRIO(priority_p, flags_p) \
Z_ISR_DECLARE(irq_p, ISR_FLAG_DIRECT, isr_p, NULL); \
z_arm_irq_priority_set(irq_p, priority_p, flags_p); \
}
#define ISR_FLAG_DIRECT
Definition: sw_isr_table.h:59

◆ ARCH_ISR_DIRECT_DECLARE

#define ARCH_ISR_DIRECT_DECLARE (   name)
Value:
static inline int name##_body(void); \
__attribute__ ((interrupt ("IRQ"))) void name(void) \
{ \
int check_reschedule; \
ISR_DIRECT_HEADER(); \
check_reschedule = name##_body(); \
ISR_DIRECT_FOOTER(check_reschedule); \
} \
static inline int name##_body(void)
void
Definition: eswifi_shell.c:15

◆ ARCH_ISR_DIRECT_FOOTER

#define ARCH_ISR_DIRECT_FOOTER (   swap)    arch_isr_direct_footer(swap)

◆ ARCH_ISR_DIRECT_HEADER

#define ARCH_ISR_DIRECT_HEADER ( )    arch_isr_direct_header()

◆ ARCH_ISR_DIRECT_PM

#define ARCH_ISR_DIRECT_PM ( )    do { } while (false)

◆ CONCAT

#define CONCAT (   x,
 
)    DO_CONCAT(x, y)

◆ DO_CONCAT

#define DO_CONCAT (   x,
 
)    x ## y

◆ DO_TOSTR

#define DO_TOSTR (   s)    #s

◆ IRQ_ZERO_LATENCY

#define IRQ_ZERO_LATENCY   BIT(0)

Set this interrupt up as a zero-latency IRQ. It has a fixed hardware priority level (discarding what was supplied in the interrupt's priority argument), and will run even if irq_lock() is active. Be careful!

◆ TOSTR

#define TOSTR (   s)    DO_TOSTR(s)

Function Documentation

◆ arch_irq_disable()

void arch_irq_disable ( unsigned int  irq)

◆ arch_irq_enable()

void arch_irq_enable ( unsigned int  irq)

◆ arch_irq_is_enabled()

int arch_irq_is_enabled ( unsigned int  irq)

◆ arch_isr_direct_footer()

static void arch_isr_direct_footer ( int  maybe_swap)
inlinestatic

◆ arch_isr_direct_header()

static void arch_isr_direct_header ( void  )
inlinestatic