diff options
Diffstat (limited to 'src/user/test/main.c')
-rw-r--r-- | src/user/test/main.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/user/test/main.c b/src/user/test/main.c index 14f6363..d890850 100644 --- a/src/user/test/main.c +++ b/src/user/test/main.c @@ -2,9 +2,13 @@ #include <tce/mem.h> #include <stdlib.h> +static volatile int threads = 0; + void thread_cascade(void* d) { int n = (int)d; + threads++; + if (d == 0) { //printk("{#} 0 cascade element started => end\n"); printk("{#}0end\t"); @@ -26,15 +30,21 @@ void thread_cascade(void* d) { //printk("{#} Thread cascade element finished.\n"); printk("{#}end\t"); } + + threads--; } int main() { printk("Hi world from test module !\n"); printk("{1} Creating thread cascade len:4\n"); - thread_new(thread_cascade, (void*)4); + thread_new(thread_cascade, (void*)7); printk("{1} Thread now sleeping...\n"); - while (1) thread_sleep(1000); + while (1) { + thread_sleep(1000); + if (threads == 0) break; + } + printk("{1} Everybody seems to be done here, exiting...\n"); return 0; } |