From ef01efc387ab7d346d01671c1b37055ff397381e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Joakim=20Nohlg=C3=A5rd?= <joakim.nohlgard@eistec.se>
Date: Tue, 29 Aug 2017 13:56:50 +0200
Subject: [PATCH] core/msg: Set THREAD_FLAG_MSG_WAITING when queueing messages

---
 core/msg.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/core/msg.c b/core/msg.c
index 5890c94540..2afc1def31 100644
--- a/core/msg.c
+++ b/core/msg.c
@@ -27,6 +27,9 @@
 #include "msg.h"
 #include "list.h"
 #include "thread.h"
+#if MODULE_CORE_THREAD_FLAGS
+#include "thread_flags.h"
+#endif
 #include "irq.h"
 #include "cib.h"
 
@@ -47,6 +50,10 @@ static int queue_msg(thread_t *target, const msg_t *m)
     DEBUG("queue_msg(): queuing message\n");
     msg_t *dest = &target->msg_array[n];
     *dest = *m;
+#if MODULE_CORE_THREAD_FLAGS
+    target->flags |= THREAD_FLAG_MSG_WAITING;
+    thread_flags_wake(target);
+#endif
     return 1;
 }
 
@@ -137,6 +144,11 @@ static int _msg_send(msg_t *m, kernel_pid_t target_pid, bool block, unsigned sta
 
         thread_add_to_list(&(target->msg_waiters), me);
 
+#if MODULE_CORE_THREAD_FLAGS
+        target->flags |= THREAD_FLAG_MSG_WAITING;
+        thread_flags_wake(target);
+#endif
+
         irq_restore(state);
         thread_yield_higher();
 
-- 
GitLab