libmetal
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 #ifdef __cplusplus
16 extern "C" {
17 #endif
18 
22 #include <stdlib.h>
23 
25 #define METAL_IRQ_NOT_HANDLED 0
26 #define METAL_IRQ_HANDLED 1
27 
34 typedef int (*metal_irq_handler) (int irq, void *priv);
35 
36 struct metal_device;
37 
48 int metal_irq_register(int irq,
49  metal_irq_handler irq_handler,
50  struct metal_device *dev,
51  void *drv_id);
52 
73 int metal_irq_unregister(int irq,
74  metal_irq_handler irq_handler,
75  struct metal_device *dev,
76  void *drv_id);
77 
82 unsigned int metal_irq_save_disable(void);
83 
88 void metal_irq_restore_enable(unsigned int flags);
89 
97 void metal_irq_enable(unsigned int vector);
98 
106 void metal_irq_disable(unsigned int vector);
107 
108 #include <metal/system/@PROJECT_SYSTEM@/irq.h>
109 
112 #ifdef __cplusplus
113 }
114 #endif
115 
116 #endif /* __METAL_IRQ__H__ */
unsigned int metal_irq_save_disable(void)
disable interrupts
Definition: irq.c:235
int metal_irq_register(int irq, metal_irq_handler irq_handler, struct metal_device *dev, void *drv_id)
Register interrupt handler for driver ID/device.
Definition: irq.c:48
Definition: device.h:71
void metal_irq_enable(unsigned int vector)
metal_irq_enable
Definition: irq.c:248
int metal_irq_unregister(int irq, metal_irq_handler irq_handler, struct metal_device *dev, void *drv_id)
Unregister interrupt handler for driver ID and/or device.
Definition: irq.c:158
void metal_irq_restore_enable(unsigned int flags)
restore interrupts to their previous state
Definition: irq.c:241
void metal_irq_disable(unsigned int vector)
metal_irq_disable
Definition: irq.c:253
int(* metal_irq_handler)(int irq, void *priv)
type of interrupt handler
Definition: irq.h:34