remain the old handler to keep forward compatibility
This commit is contained in:
parent
9678ee67e9
commit
7917cf09e7
@ -41,9 +41,10 @@ rt_uint8_t *rt_hw_stack_init(void *entry,
|
|||||||
void rt_hw_interrupt_init(void);
|
void rt_hw_interrupt_init(void);
|
||||||
void rt_hw_interrupt_mask(int vector);
|
void rt_hw_interrupt_mask(int vector);
|
||||||
void rt_hw_interrupt_umask(int vector);
|
void rt_hw_interrupt_umask(int vector);
|
||||||
void rt_hw_interrupt_install(int vector,
|
rt_isr_handler_t rt_hw_interrupt_install(int vector,
|
||||||
rt_isr_handler_t handler,
|
rt_isr_handler_t handler,
|
||||||
void *param, char *name);
|
void *param,
|
||||||
|
char *name);
|
||||||
void rt_hw_interrupt_handle(int vector);
|
void rt_hw_interrupt_handle(int vector);
|
||||||
|
|
||||||
rt_base_t rt_hw_interrupt_disable(void);
|
rt_base_t rt_hw_interrupt_disable(void);
|
||||||
|
@ -427,6 +427,14 @@ void rt_module_unload_sethook(void (*hook)(rt_module_t module));
|
|||||||
*/
|
*/
|
||||||
typedef void (*rt_isr_handler_t)(int vector, void *param);
|
typedef void (*rt_isr_handler_t)(int vector, void *param);
|
||||||
|
|
||||||
|
struct rt_irq_desc {
|
||||||
|
char irq_name[RT_NAME_MAX];
|
||||||
|
rt_isr_handler_t isr_handle;
|
||||||
|
void *param;
|
||||||
|
rt_uint32_t interrupt_cnt;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* rt_interrupt_enter and rt_interrupt_leave only can be called by BSP
|
* rt_interrupt_enter and rt_interrupt_leave only can be called by BSP
|
||||||
*/
|
*/
|
||||||
|
@ -14,7 +14,6 @@
|
|||||||
|
|
||||||
#include <rtthread.h>
|
#include <rtthread.h>
|
||||||
#include "at91sam926x.h"
|
#include "at91sam926x.h"
|
||||||
#include "interrupt.h"
|
|
||||||
|
|
||||||
#define MAX_HANDLERS (AIC_IRQS + PIN_IRQS)
|
#define MAX_HANDLERS (AIC_IRQS + PIN_IRQS)
|
||||||
|
|
||||||
@ -308,17 +307,26 @@ void rt_hw_interrupt_umask(int irq)
|
|||||||
* @param handler the interrupt service routine to be installed
|
* @param handler the interrupt service routine to be installed
|
||||||
* @param param the interrupt service function parameter
|
* @param param the interrupt service function parameter
|
||||||
* @param name the interrupt name
|
* @param name the interrupt name
|
||||||
|
* @return old handler
|
||||||
*/
|
*/
|
||||||
void rt_hw_interrupt_install(int vector, rt_isr_handler_t handler,
|
rt_isr_handler_t rt_hw_interrupt_install(int vector, rt_isr_handler_t handler,
|
||||||
void *param, char *name)
|
void *param, char *name)
|
||||||
{
|
{
|
||||||
|
rt_isr_handler_t old_handler = RT_NULL;
|
||||||
|
|
||||||
if(vector < MAX_HANDLERS)
|
if(vector < MAX_HANDLERS)
|
||||||
{
|
{
|
||||||
rt_snprintf(irq_desc[vector].irq_name, RT_NAME_MAX - 1, "%s", name);
|
old_handler = irq_desc[vector].isr_handle;
|
||||||
irq_desc[vector].isr_handle = (rt_isr_handler_t)handler;
|
if (handler != RT_NULL)
|
||||||
irq_desc[vector].param = param;
|
{
|
||||||
irq_desc[vector].interrupt_cnt = 0;
|
rt_snprintf(irq_desc[vector].irq_name, RT_NAME_MAX - 1, "%s", name);
|
||||||
|
irq_desc[vector].isr_handle = (rt_isr_handler_t)handler;
|
||||||
|
irq_desc[vector].param = param;
|
||||||
|
irq_desc[vector].interrupt_cnt = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return old_handler;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*@}*/
|
/*@}*/
|
||||||
|
@ -1,11 +0,0 @@
|
|||||||
#ifndef __INTERRUPT_H__
|
|
||||||
#define __INTERRUPT_H__
|
|
||||||
|
|
||||||
struct rt_irq_desc {
|
|
||||||
char irq_name[RT_NAME_MAX];
|
|
||||||
rt_isr_handler_t isr_handle;
|
|
||||||
void *param;
|
|
||||||
rt_uint32_t interrupt_cnt;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
@ -16,7 +16,6 @@
|
|||||||
#include <rthw.h>
|
#include <rthw.h>
|
||||||
|
|
||||||
#include "at91sam926x.h"
|
#include "at91sam926x.h"
|
||||||
#include "interrupt.h"
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @addtogroup AT91SAM926X
|
* @addtogroup AT91SAM926X
|
||||||
|
Loading…
x
Reference in New Issue
Block a user