mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
Merge pull request #4884 from kaspar030/fix_msg_try_receive
core: msg: fix msg_try_receive()
This commit is contained in:
commit
94c287c4c2
@ -298,7 +298,7 @@ static int _msg_receive(msg_t *m, int block)
|
||||
}
|
||||
|
||||
/* no message, fail */
|
||||
if ((!block) && (queue_index == -1)) {
|
||||
if ((!block) && ((!me->msg_waiters.first) && (queue_index == -1))) {
|
||||
restoreIRQ(state);
|
||||
return -1;
|
||||
}
|
||||
|
4
tests/msg_try_receive/Makefile
Normal file
4
tests/msg_try_receive/Makefile
Normal file
@ -0,0 +1,4 @@
|
||||
APPLICATION = msg_try_receive
|
||||
include ../Makefile.tests_common
|
||||
|
||||
include $(RIOTBASE)/Makefile.include
|
57
tests/msg_try_receive/main.c
Normal file
57
tests/msg_try_receive/main.c
Normal file
@ -0,0 +1,57 @@
|
||||
/*
|
||||
* Copyright (C) 2016 Kaspar Schleiser <kaspar@schleiser.de>
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU Lesser
|
||||
* General Public License v2.1. See the file LICENSE in the top level
|
||||
* directory for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ingroup tests
|
||||
* @{
|
||||
*
|
||||
* @file
|
||||
* @brief msg_try_receive regression test application
|
||||
*
|
||||
* @author Kaspar Schleiser <kaspar@schleiser.de>
|
||||
*
|
||||
* @}
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include "thread.h"
|
||||
|
||||
#include "msg.h"
|
||||
|
||||
static kernel_pid_t _main_pid;
|
||||
|
||||
static char stack[THREAD_STACKSIZE_MAIN];
|
||||
static void *second_thread(void *arg)
|
||||
{
|
||||
(void) arg;
|
||||
msg_t test;
|
||||
puts("sending message...");
|
||||
msg_send(&test, _main_pid);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
printf("main starting\n");
|
||||
|
||||
_main_pid = thread_getpid();
|
||||
|
||||
thread_create(stack,
|
||||
sizeof(stack),
|
||||
THREAD_PRIORITY_MAIN - 1,
|
||||
0,
|
||||
second_thread,
|
||||
NULL,
|
||||
"second_thread");
|
||||
|
||||
msg_t m;
|
||||
printf("msg available: %i (should be 1!)\n", msg_try_receive(&m));
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user