|
|
|
@ -1,5 +1,6 @@
|
|
|
|
|
/*
|
|
|
|
|
* Copyright (C) 2015 Nick van IJzendoorn <nijzendoorn@engineering-spirit.nl> |
|
|
|
|
* 2017 HAW Hamburg |
|
|
|
|
* |
|
|
|
|
* 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 |
|
|
|
@ -14,6 +15,7 @@
|
|
|
|
|
* @brief Thread test application |
|
|
|
|
* |
|
|
|
|
* @author Nick van IJzendoorn <nijzendoorn@engineering-spirit.nl> |
|
|
|
|
* @author Sebastian Meiling <s@mlng.net> |
|
|
|
|
* |
|
|
|
|
* @} |
|
|
|
|
*/ |
|
|
|
@ -21,7 +23,7 @@
|
|
|
|
|
#include <stdio.h> |
|
|
|
|
#include <inttypes.h> |
|
|
|
|
|
|
|
|
|
#include "thread.h" |
|
|
|
|
#include "log.h" |
|
|
|
|
#include "msg.h" |
|
|
|
|
|
|
|
|
|
#define MSG_QUEUE_LENGTH (8) |
|
|
|
@ -34,28 +36,27 @@ int main(void)
|
|
|
|
|
|
|
|
|
|
msg_init_queue(msg_queue, MSG_QUEUE_LENGTH); |
|
|
|
|
|
|
|
|
|
puts("[START]"); |
|
|
|
|
/* add message to own queue */ |
|
|
|
|
for (int idx = 0; idx < MSG_QUEUE_LENGTH; ++idx) { |
|
|
|
|
msges[idx].sender_pid = thread_getpid(); |
|
|
|
|
msges[idx].type = idx; |
|
|
|
|
|
|
|
|
|
msg_send_to_self(msges + idx); |
|
|
|
|
|
|
|
|
|
printf("Add message %d\n", idx); |
|
|
|
|
|
|
|
|
|
while (msg_avail() != (idx) + 1) |
|
|
|
|
; /* spin forever if we don't have the result we expect */ |
|
|
|
|
LOG_INFO("+ add msg: %d\n", idx); |
|
|
|
|
if (msg_avail() != (idx) + 1) { |
|
|
|
|
puts("[FAILED]"); |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* receive available messages in queue */ |
|
|
|
|
for (int idx = msg_avail(); idx > 0; --idx) { |
|
|
|
|
msg_t msg; |
|
|
|
|
msg_receive(&msg); |
|
|
|
|
|
|
|
|
|
printf("Receive message: %d\n", (MSG_QUEUE_LENGTH - idx)); |
|
|
|
|
|
|
|
|
|
while (msg.type != (MSG_QUEUE_LENGTH - idx) || msg_avail() != idx - 1) |
|
|
|
|
; /* spin forever if we don't have the result we expect */ |
|
|
|
|
LOG_INFO("- got msg: %d\n", (MSG_QUEUE_LENGTH - idx)); |
|
|
|
|
if (msg.type != (MSG_QUEUE_LENGTH - idx) || msg_avail() != idx - 1) { |
|
|
|
|
puts("[FAILED]"); |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
puts("TEST PASSED\n"); |
|
|
|
|
puts("[SUCCESS]"); |
|
|
|
|
return 0; |
|
|
|
|
} |