diff --git a/tests/ps_schedstatistics/main.c b/tests/ps_schedstatistics/main.c index 3d404a1d76a2d41a434d404301bb5da39130b68a..7d2f9de6d3aeb039cb48183130f66beede8f8be7 100644 --- a/tests/ps_schedstatistics/main.c +++ b/tests/ps_schedstatistics/main.c @@ -1,5 +1,6 @@ /* * Copyright (C) 2017 OTA keys S.A. + * 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 ps schedstatistics test app * * @author Vincent Dupont <vincent@otakeys.com> + * @author Sebastian Meiling <s@mlng.net> * * @} */ @@ -25,23 +27,26 @@ #include <thread.h> #include <xtimer.h> -#define NB_THREADS 5 +#define NB_THREADS (5U) static char stacks[NB_THREADS][THREAD_STACKSIZE_DEFAULT]; static kernel_pid_t pids[NB_THREADS]; static void *_thread_fn(void *arg) { - int next = (int)arg < NB_THREADS - 1 ? (int)arg + 1 : 0; - msg_t msg; + int next = ((int)arg + 1) % NB_THREADS; printf("Creating thread #%d, next=%d\n", (int)arg, next); while (1) { - msg_receive(&msg); - xtimer_usleep(XTIMER_BACKOFF - 1); - xtimer_usleep(2 * XTIMER_BACKOFF); - msg_send(&msg, pids[next]); + msg_t m1, m2; + msg_receive(&m1); + /* generate differents loads per thead */ + for (int i = 0; i < (10 * (next + 1)); ++i) { + _xtimer_now64(); + } + xtimer_usleep(XTIMER_BACKOFF * 3); + msg_send(&m2, pids[next]); } return NULL; @@ -49,13 +54,14 @@ static void *_thread_fn(void *arg) int main(void) { - for (int i = 0; i < NB_THREADS; i++) { + for (unsigned i = 0; i < NB_THREADS; ++i) { pids[i] = thread_create(stacks[i], sizeof(stacks[i]), - THREAD_PRIORITY_MAIN + 1, + THREAD_PRIORITY_MAIN - 1, THREAD_CREATE_STACKTEST, _thread_fn, (void *)i, "thread"); } - + /* sleep for a second, so that `ps` shows some % on idle at the beginning */ + xtimer_sleep(1); msg_t msg; msg_send(&msg, pids[0]);