11#ifndef ZEPHYR_INCLUDE_IRQ_H_
12#define ZEPHYR_INCLUDE_IRQ_H_
50#define IRQ_CONNECT(irq_p, priority_p, isr_p, isr_param_p, flags_p) \
51 ARCH_IRQ_CONNECT(irq_p, priority_p, isr_p, isr_param_p, flags_p)
68 void (*routine)(
const void *parameter),
93 void (*routine)(
const void *parameter),
117#if !defined(CONFIG_ARCH_HAS_DIRECT_INTERRUPTS) && !defined(__DOXYGEN__)
119#define Z_ISR_DIRECT_UNSUPPORTED \
120 BUILD_ASSERT(0, "direct interrupts are not supported by this architecture")
122#define ARCH_IRQ_DIRECT_CONNECT(irq_p, priority_p, isr_p, flags_p) \
123 Z_ISR_DIRECT_UNSUPPORTED
124#define ARCH_ISR_DIRECT_DECLARE(name) \
125 Z_ISR_DIRECT_UNSUPPORTED; \
172#define IRQ_DIRECT_CONNECT(irq_p, priority_p, isr_p, flags_p) \
173 ARCH_IRQ_DIRECT_CONNECT(irq_p, priority_p, isr_p, flags_p)
182#define ISR_DIRECT_HEADER() ARCH_ISR_DIRECT_HEADER()
199#define ISR_DIRECT_FOOTER(check_reschedule) \
200 ARCH_ISR_DIRECT_FOOTER(check_reschedule)
214#define ISR_DIRECT_PM() ARCH_ISR_DIRECT_PM()
249#define ISR_DIRECT_DECLARE(name) ARCH_ISR_DIRECT_DECLARE(name)
289unsigned int z_smp_global_lock(
void);
290#define irq_lock() z_smp_global_lock()
292#define irq_lock() arch_irq_lock()
317void z_smp_global_unlock(
unsigned int key);
318#define irq_unlock(key) z_smp_global_unlock(key)
320#define irq_unlock(key) arch_irq_unlock(key)
330#define irq_enable(irq) arch_irq_enable(irq)
339#define irq_disable(irq) arch_irq_disable(irq)
350#define irq_is_enabled(irq) arch_irq_is_enabled(irq)
425 void (*routine)(
const void *parameter),
444 void (*routine)(
const void *parameter),
450#if defined(CONFIG_ARCH_HAS_IRQ_PENDING_OPS) || defined(__DOXYGEN__)
502#if defined(CONFIG_ARCH_HAS_IRQ_GET_ACTIVE) || defined(__DOXYGEN__)
506#define K_IRQ_ACTIVE_NONE UINT_MAX
int arch_irq_disconnect_dynamic(unsigned int irq, unsigned int priority, void(*routine)(const void *parameter), const void *parameter, uint32_t flags)
Arch-specific hook to dynamically uninstall a shared interrupt.
void arch_irq_clear_pending(unsigned int irq)
Clear the pending state of the specified interrupt line.
bool arch_irq_is_pending(unsigned int irq)
Test if the specified interrupt line is pending.
int arch_irq_connect_dynamic(unsigned int irq, unsigned int priority, void(*routine)(const void *parameter), const void *parameter, uint32_t flags)
Arch-specific hook to install a dynamic interrupt.
void arch_irq_set_pending(unsigned int irq)
Set the pending state of the specified interrupt line.
unsigned int arch_irq_get_active(void)
Report the interrupt line being serviced on the current CPU.
#define irq_lock()
Lock interrupts.
Definition irq.h:290
static ALWAYS_INLINE bool k_irq_is_pending(unsigned int irq)
Get IRQ pending state.
Definition irq.h:496
static ALWAYS_INLINE int k_irq_connect_dynamic(unsigned int irq, unsigned int priority, void(*routine)(const void *parameter), const void *parameter, uint32_t flags)
Configure a dynamic interrupt; namespaced equivalent of irq_connect_dynamic().
Definition irq.h:424
static ALWAYS_INLINE void k_irq_disable(unsigned int irq)
Disable an IRQ; namespaced equivalent of irq_disable().
Definition irq.h:395
static ALWAYS_INLINE void k_irq_unlock(unsigned int key)
Unlock interrupts; namespaced equivalent of irq_unlock().
Definition irq.h:375
static int irq_connect_dynamic(unsigned int irq, unsigned int priority, void(*routine)(const void *parameter), const void *parameter, uint32_t flags)
Configure a dynamic interrupt.
Definition irq.h:67
static ALWAYS_INLINE void k_irq_enable(unsigned int irq)
Enable an IRQ; namespaced equivalent of irq_enable().
Definition irq.h:385
#define irq_unlock(key)
Unlock interrupts.
Definition irq.h:318
#define irq_is_enabled(irq)
Get IRQ enable state.
Definition irq.h:350
#define irq_enable(irq)
Enable an IRQ.
Definition irq.h:330
#define irq_disable(irq)
Disable an IRQ.
Definition irq.h:339
static ALWAYS_INLINE void k_irq_clear_pending(unsigned int irq)
Clear the pending state of an IRQ.
Definition irq.h:462
static ALWAYS_INLINE unsigned int k_irq_get_active(void)
Get the IRQ currently being serviced on this CPU.
Definition irq.h:521
static ALWAYS_INLINE void k_irq_set_pending(unsigned int irq)
Set the pending state of an IRQ.
Definition irq.h:478
static ALWAYS_INLINE int k_irq_is_enabled(unsigned int irq)
Get IRQ enable state; namespaced equivalent of irq_is_enabled().
Definition irq.h:407
static int irq_disconnect_dynamic(unsigned int irq, unsigned int priority, void(*routine)(const void *parameter), const void *parameter, uint32_t flags)
Disconnect a dynamic interrupt.
Definition irq.h:92
static ALWAYS_INLINE unsigned int k_irq_lock(void)
Lock interrupts; namespaced equivalent of irq_lock().
Definition irq.h:365
static ALWAYS_INLINE int k_irq_disconnect_dynamic(unsigned int irq, unsigned int priority, void(*routine)(const void *parameter), const void *parameter, uint32_t flags)
Disconnect a dynamic interrupt; namespaced equivalent of irq_disconnect_dynamic().
Definition irq.h:443
flags
Definition parser.h:97
__UINT32_TYPE__ uint32_t
Definition stdint.h:90