kernel: add arch abstraction for irq_offload()
This makes it clearer that this is an API that is expected to be implemented at the architecture level. Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
This commit is contained in:
parent
0f5d2d323f
commit
89d4c6928e
11 changed files with 16 additions and 11 deletions
|
@ -20,7 +20,7 @@ void z_irq_do_offload(void)
|
||||||
offload_routine(offload_param);
|
offload_routine(offload_param);
|
||||||
}
|
}
|
||||||
|
|
||||||
void irq_offload(irq_offload_routine_t routine, void *parameter)
|
void z_arch_irq_offload(irq_offload_routine_t routine, void *parameter)
|
||||||
{
|
{
|
||||||
unsigned int key;
|
unsigned int key;
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,7 @@ void z_irq_do_offload(void)
|
||||||
offload_routine(offload_param);
|
offload_routine(offload_param);
|
||||||
}
|
}
|
||||||
|
|
||||||
void irq_offload(irq_offload_routine_t routine, void *parameter)
|
void z_arch_irq_offload(irq_offload_routine_t routine, void *parameter)
|
||||||
{
|
{
|
||||||
#if defined(CONFIG_ARMV6_M_ARMV8_M_BASELINE) && defined(CONFIG_ASSERT)
|
#if defined(CONFIG_ARMV6_M_ARMV8_M_BASELINE) && defined(CONFIG_ASSERT)
|
||||||
/* ARMv6-M/ARMv8-M Baseline HardFault if you make a SVC call with
|
/* ARMv6-M/ARMv8-M Baseline HardFault if you make a SVC call with
|
||||||
|
|
|
@ -29,7 +29,7 @@ void z_irq_do_offload(void)
|
||||||
tmp((void *)offload_param);
|
tmp((void *)offload_param);
|
||||||
}
|
}
|
||||||
|
|
||||||
void irq_offload(irq_offload_routine_t routine, void *parameter)
|
void z_arch_irq_offload(irq_offload_routine_t routine, void *parameter)
|
||||||
{
|
{
|
||||||
unsigned int key;
|
unsigned int key;
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@ void z_irq_do_offload(void)
|
||||||
tmp((void *)offload_param);
|
tmp((void *)offload_param);
|
||||||
}
|
}
|
||||||
|
|
||||||
void irq_offload(irq_offload_routine_t routine, void *parameter)
|
void z_arch_irq_offload(irq_offload_routine_t routine, void *parameter)
|
||||||
{
|
{
|
||||||
unsigned int key;
|
unsigned int key;
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,7 @@ void z_irq_do_offload(void)
|
||||||
offload_routine(offload_param);
|
offload_routine(offload_param);
|
||||||
}
|
}
|
||||||
|
|
||||||
void irq_offload(irq_offload_routine_t routine, void *parameter)
|
void z_arch_irq_offload(irq_offload_routine_t routine, void *parameter)
|
||||||
{
|
{
|
||||||
unsigned int key;
|
unsigned int key;
|
||||||
|
|
||||||
|
|
|
@ -89,7 +89,7 @@ int z_arch_irq_connect_dynamic(unsigned int irq, unsigned int priority,
|
||||||
#ifdef CONFIG_IRQ_OFFLOAD
|
#ifdef CONFIG_IRQ_OFFLOAD
|
||||||
#include <irq_offload.h>
|
#include <irq_offload.h>
|
||||||
|
|
||||||
void irq_offload(irq_offload_routine_t routine, void *parameter)
|
void z_arch_irq_offload(irq_offload_routine_t routine, void *parameter)
|
||||||
{
|
{
|
||||||
u32_t key;
|
u32_t key;
|
||||||
|
|
||||||
|
|
|
@ -107,7 +107,7 @@ static void irq_offload_handler(void *arg, int err)
|
||||||
offload_fn(offload_arg);
|
offload_fn(offload_arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
void irq_offload(irq_offload_routine_t fn, void *arg)
|
void z_arch_irq_offload(irq_offload_routine_t fn, void *arg)
|
||||||
{
|
{
|
||||||
offload_fn = fn;
|
offload_fn = fn;
|
||||||
offload_arg = arg;
|
offload_arg = arg;
|
||||||
|
|
|
@ -23,7 +23,7 @@ void z_irq_do_offload(void *unused)
|
||||||
offload_routine(offload_param);
|
offload_routine(offload_param);
|
||||||
}
|
}
|
||||||
|
|
||||||
void irq_offload(irq_offload_routine_t routine, void *parameter)
|
void z_arch_irq_offload(irq_offload_routine_t routine, void *parameter)
|
||||||
{
|
{
|
||||||
IRQ_CONNECT(CONFIG_IRQ_OFFLOAD_INTNUM, XCHAL_EXCM_LEVEL,
|
IRQ_CONNECT(CONFIG_IRQ_OFFLOAD_INTNUM, XCHAL_EXCM_LEVEL,
|
||||||
z_irq_do_offload, NULL, 0);
|
z_irq_do_offload, NULL, 0);
|
||||||
|
|
|
@ -329,7 +329,7 @@ static void offload_sw_irq_handler(void *a)
|
||||||
*
|
*
|
||||||
* Raise the SW IRQ assigned to handled this
|
* Raise the SW IRQ assigned to handled this
|
||||||
*/
|
*/
|
||||||
void irq_offload(irq_offload_routine_t routine, void *parameter)
|
void z_arch_irq_offload(irq_offload_routine_t routine, void *parameter)
|
||||||
{
|
{
|
||||||
off_routine = routine;
|
off_routine = routine;
|
||||||
off_parameter = parameter;
|
off_parameter = parameter;
|
||||||
|
|
|
@ -393,7 +393,7 @@ static void offload_sw_irq_handler(void *a)
|
||||||
*
|
*
|
||||||
* Raise the SW IRQ assigned to handled this
|
* Raise the SW IRQ assigned to handled this
|
||||||
*/
|
*/
|
||||||
void irq_offload(irq_offload_routine_t routine, void *parameter)
|
void z_arch_irq_offload(irq_offload_routine_t routine, void *parameter)
|
||||||
{
|
{
|
||||||
off_routine = routine;
|
off_routine = routine;
|
||||||
off_parameter = parameter;
|
off_parameter = parameter;
|
||||||
|
|
|
@ -17,6 +17,8 @@ extern "C" {
|
||||||
|
|
||||||
typedef void (*irq_offload_routine_t)(void *parameter);
|
typedef void (*irq_offload_routine_t)(void *parameter);
|
||||||
|
|
||||||
|
void z_arch_irq_offload(irq_offload_routine_t routine, void *parameter);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Run a function in interrupt context
|
* @brief Run a function in interrupt context
|
||||||
*
|
*
|
||||||
|
@ -29,7 +31,10 @@ typedef void (*irq_offload_routine_t)(void *parameter);
|
||||||
* @param parameter Argument to pass to the function when it is run as an
|
* @param parameter Argument to pass to the function when it is run as an
|
||||||
* interrupt
|
* interrupt
|
||||||
*/
|
*/
|
||||||
void irq_offload(irq_offload_routine_t routine, void *parameter);
|
static inline void irq_offload(irq_offload_routine_t routine, void *parameter)
|
||||||
|
{
|
||||||
|
z_arch_irq_offload(routine, parameter);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue