From 04b246cb01287a6e86094c674ef90ff6111748e8 Mon Sep 17 00:00:00 2001 From: Hauke Petersen <hauke.petersen@fu-berlin.de> Date: Wed, 30 Nov 2016 18:25:48 +0100 Subject: [PATCH] cpu/cortexm_common: added cortexm_isr_end() function --- cpu/cortexm_common/include/cpu.h | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/cpu/cortexm_common/include/cpu.h b/cpu/cortexm_common/include/cpu.h index 04218a76ec..ef34370cfa 100644 --- a/cpu/cortexm_common/include/cpu.h +++ b/cpu/cortexm_common/include/cpu.h @@ -32,8 +32,10 @@ #include <stdio.h> -#include "cpu_conf.h" #include "irq.h" +#include "sched.h" +#include "thread.h" +#include "cpu_conf.h" #ifdef __cplusplus extern "C" { @@ -88,6 +90,18 @@ static inline void cpu_sleep_until_event(void) __WFE(); } +/** + * @brief Trigger a conditional context scheduler run / context switch + * + * This function is supposed to be called in the end of each ISR. + */ +static inline void cortexm_isr_end(void) +{ + if (sched_context_switch_request) { + thread_yield(); + } +} + #ifdef __cplusplus } #endif -- GitLab