diff options
author | Alex AUVOLAT <alexis211@gmail.com> | 2012-05-19 11:45:49 +0200 |
---|---|---|
committer | Alex AUVOLAT <alexis211@gmail.com> | 2012-05-19 11:45:49 +0200 |
commit | 499ca6c243b05da176a2d4bd9a2317f0b28afc7f (patch) | |
tree | f55ff788632b017ab8de83b71ad02b0998e1dda5 /src/user/app/test/main.c | |
parent | 7b466345af0d3a7dc5622617ce443a90c64e34a4 (diff) | |
download | TCE-499ca6c243b05da176a2d4bd9a2317f0b28afc7f.tar.gz TCE-499ca6c243b05da176a2d4bd9a2317f0b28afc7f.zip |
Introducing FWIK, the userland C++ framework. Far from complete.
Diffstat (limited to 'src/user/app/test/main.c')
-rw-r--r-- | src/user/app/test/main.c | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/src/user/app/test/main.c b/src/user/app/test/main.c new file mode 100644 index 0000000..5940cae --- /dev/null +++ b/src/user/app/test/main.c @@ -0,0 +1,56 @@ +#include <tce/syscall.h> + +int threads = 0; + +void thread_cascade(void* d) { + int n = (int)d; + + threads ++; + + if (d == 0) { + //printk("{#} 0 cascade element started => end\n"); + printk("*"); + } else { + if (n < 0) { + //printk("{#} - cascade element started\n"); + printk("-"); + n = 0 - n; + } else { + //printk("{#} + cascade element started\n"); + printk("+"); + } + //printk("{#} FORK + ...\n"); + printk(">"); + thread_new(thread_cascade, (void*)(n - 1)); + //printk("{#} FORK - ...\n"); + printk("<"); + thread_new(thread_cascade, (void*)(1 - n)); + //printk("{#} Thread cascade element finished.\n"); + printk("."); + } + + threads--; +} + +int main(char** args) { + char**a; + if (args != 0) { + printk("args"); + for (a = args; *a != 0; a++) { + printk(" - "); + printk(*a); + } + printk("\n"); + } + + printk(" -> Creating thread cascade (total 2**4 = 16 threads)\n"); + thread_new(thread_cascade, (void*)4); + + while (1) { + thread_sleep(100); + if (threads == 0) break; + } + printk("\n -> Test process exiting. Press the super key to go to the home terminal.\n"); + + return 0; +} |