diff --git a/cpu/cortexm_common/include/cpu.h b/cpu/cortexm_common/include/cpu.h index 04218a76ec8838c66b802785338838715944f32e..ef34370cfad877132958d9248b86170e9313e1ad 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