libmetal
Loading...
Searching...
No Matches
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
19extern "C" {
20#endif
21
27#define METAL_IRQ_NOT_HANDLED 0
28#define METAL_IRQ_HANDLED 1
29
36typedef int (*metal_irq_handler) (int irq, void *arg);
37
51int metal_irq_register(int irq,
52 metal_irq_handler irq_handler,
53 void *arg);
54
60static inline
62{
63 metal_irq_register(irq, 0, NULL);
64}
65
70unsigned int metal_irq_save_disable(void);
71
76void metal_irq_restore_enable(unsigned int flags);
77
85void metal_irq_enable(unsigned int vector);
86
94void 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. Only allow single interrupt handler for a interrupt.
Definition irq.c:109
void metal_irq_restore_enable(unsigned int flags)
restore interrupts to their previous state
Definition irq.c:26