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