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