1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
RIOT/tests/thread_msg_seq/main.c
Kees Bakker 370e166f31 tests/thread_msg_seq: better guarantee sequence of output lines
This also changes to expectations of the test script. It does not rely
on fixed thread IDs anymore, because boards with CDC ACM as stdio have
a different first thread then boards with "normal" stdio via UART.

This resolves issue #14256
2020-06-15 21:53:56 +02:00

78 lines
1.9 KiB
C

/*
* Copyright (C) 2013 Christian Mehlis <mehlis@inf.fu-berlin.de>
* (C) 2014 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 Thread test application
*
* @author Christian Mehlis <mehlis@inf.fu-berlin.de>
* @author Kaspar Schleiser <kaspar@schleiser.de>
*
* @}
*/
#include <stdio.h>
#include "thread.h"
#include "msg.h"
char t1_stack[THREAD_STACKSIZE_MAIN];
char t2_stack[THREAD_STACKSIZE_MAIN];
char t3_stack[THREAD_STACKSIZE_MAIN];
kernel_pid_t p_main = KERNEL_PID_UNDEF, p1 = KERNEL_PID_UNDEF,
p2 = KERNEL_PID_UNDEF, p3 = KERNEL_PID_UNDEF;
void *sub_thread(void *arg)
{
kernel_pid_t pid = thread_getpid();
printf("THREAD %s (pid:%" PRIkernel_pid ") start\n", (char*) arg, pid);
msg_t msg;
msg.content.ptr = arg;
msg_send(&msg, p_main);
printf("THREAD %s (pid:%" PRIkernel_pid ") end.\n", (char*) arg, pid);
return NULL;
}
int main(void)
{
puts("START");
msg_t msg;
p_main = sched_active_pid;
p1 = thread_create(t1_stack, sizeof(t1_stack), THREAD_PRIORITY_MAIN - 1,
THREAD_CREATE_STACKTEST, sub_thread, "nr1", "nr1");
p2 = thread_create(t2_stack, sizeof(t2_stack), THREAD_PRIORITY_MAIN - 1,
THREAD_CREATE_STACKTEST, sub_thread, "nr2", "nr2");
p3 = thread_create(t3_stack, sizeof(t3_stack), THREAD_PRIORITY_MAIN - 1,
THREAD_CREATE_STACKTEST, sub_thread, "nr3", "nr3");
puts("THREADS CREATED\n");
for (int i = 0; i < 3; i++) {
msg_receive(&msg);
printf("Got msg from pid %" PRIkernel_pid ": \"%s\"\n", msg.sender_pid, (char *)msg.content.ptr);
}
puts("SUCCESS");
return 0;
}