libmetal  latest
irq.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2016, Xilinx Inc. and Contributors. All rights reserved.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 /*
8  * @file irq.h
9  * @brief Interrupt handling primitives for libmetal.
10  */
11 
12 #ifndef __METAL_IRQ__H__
13 #define __METAL_IRQ__H__
14 
15 #include <metal/list.h>
16 #include <stdlib.h>
17 
18 #ifdef __cplusplus
19 extern "C" {
20 #endif
21 
27 #define METAL_IRQ_NOT_HANDLED 0
28 #define METAL_IRQ_HANDLED 1
29 
36 typedef int (*metal_irq_handler) (int irq, void *arg);
37 
51 int metal_irq_register(int irq,
52  metal_irq_handler irq_handler,
53  void *arg);
54 
60 static inline
61 void metal_irq_unregister(int irq)
62 {
63  metal_irq_register(irq, 0, NULL);
64 }
65 
70 unsigned int metal_irq_save_disable(void);
71 
76 void metal_irq_restore_enable(unsigned int flags);
77 
85 void metal_irq_enable(unsigned int vector);
86 
94 void metal_irq_disable(unsigned int vector);
95 
96 #include <metal/system/@PROJECT_SYSTEM@/irq.h>
97 
100 #ifdef __cplusplus
101 }
102 #endif
103 
104 #endif /* __METAL_IRQ__H__ */
void metal_irq_enable(unsigned int vector)
metal_irq_enable
Definition: irq.c:132
int(* metal_irq_handler)(int irq, void *arg)
type of interrupt handler
Definition: irq.h:36
void metal_irq_disable(unsigned int vector)
metal_irq_disable
Definition: irq.c:137
static void metal_irq_unregister(int irq)
Unregister interrupt handler for interrupt.
Definition: irq.h:61
unsigned int metal_irq_save_disable(void)
disable interrupts
Definition: irq.c:21
int metal_irq_register(int irq, metal_irq_handler irq_handler, void *arg)
Register interrupt handler for interrupt.
Definition: irq.c:109
void metal_irq_restore_enable(unsigned int flags)
restore interrupts to their previous state
Definition: irq.c:26