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:
Andrew Boie 2019-09-30 15:58:11 -07:00 committed by Ioannis Glaropoulos
commit 89d4c6928e
11 changed files with 16 additions and 11 deletions

View file

@ -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;

View file

@ -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

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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);

View file

@ -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;

View file

@ -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;

View file

@ -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
} }