diff --git a/core/msg.c b/core/msg.c index b5d5438894a35f264d71045c2557e43e6199e2b3..905edc9ce07cd7b91d32571f01378fcc580bbcd7 100644 --- a/core/msg.c +++ b/core/msg.c @@ -324,12 +324,17 @@ static int _msg_receive(msg_t *m, int block) *m = *sender_msg; /* remove sender from queue */ + uint16_t sender_prio = PRIORITY_IDLE; if (sender->status != STATUS_REPLY_BLOCKED) { sender->wait_data = NULL; sched_set_status(sender, STATUS_PENDING); + sender_prio = sender->priority; } eINT(); + if (sender_prio < PRIORITY_IDLE) { + sched_switch(sender_prio); + } return 1; }