From 97e7a80260e5409f59ea2a874b7edebe2af395ca Mon Sep 17 00:00:00 2001 From: Kaspar Schleiser <kaspar@schleiser.de> Date: Tue, 2 Nov 2010 11:54:03 +0100 Subject: [PATCH] * test_suite: add test_thread_sleep 2/2 --- projects/test_suite/Jamfile | 4 +-- projects/test_suite/thread_sleep.c | 40 ++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 projects/test_suite/thread_sleep.c diff --git a/projects/test_suite/Jamfile b/projects/test_suite/Jamfile index eb5ff2d43b..dfb96deb7d 100644 --- a/projects/test_suite/Jamfile +++ b/projects/test_suite/Jamfile @@ -6,7 +6,7 @@ SubDir TOP projects test_suite ; -Module test_suite : test_suite.c mutex_trylock_fail.c - : shell posix_io ps uart0 ; +Module test_suite : test_suite.c mutex_trylock_fail.c thread_sleep.c + : shell posix_io ps uart0 hwtimer ; UseModule test_suite ; diff --git a/projects/test_suite/thread_sleep.c b/projects/test_suite/thread_sleep.c new file mode 100644 index 0000000000..c4bc3294a3 --- /dev/null +++ b/projects/test_suite/thread_sleep.c @@ -0,0 +1,40 @@ +#include <stdio.h> +#include <thread.h> +#include <kernel.h> + +static int integer = 0; +static int i = 0; + +static void second_thread(void) { + while(1) { + integer++; + printf("sleeper: running. integer=%i, i=%i.\n", integer, i); + if (integer % 10 == 0) { + printf("Going to sleep.\n"); + thread_sleep(); + printf("Woke up!\n"); + } + } +} + +static char second_thread_stack[KERNEL_CONF_STACKSIZE_DEFAULT*2]; +static tcb second_thread_tcb; + +void test_thread_sleep(char* line) +{ + int pid = thread_create(&second_thread_tcb, second_thread_stack, sizeof(second_thread_stack), PRIORITY_MAIN-1, CREATE_STACKTEST | CREATE_SLEEPING | CREATE_WOUT_YIELD, second_thread, "sleeper"); + + if (pid < 0) { + puts("Error creating second_thread! Stopping test."); + while(1); + } + + while(1) { + i++; + printf(" main: running. integer=%i, i=%i.\n", integer, i); + if (i % 10 == 0) { + printf("Waking up sleeper.\n"); + thread_wakeup(pid); + } + } +} -- GitLab