diff options
| author | [email protected] <[email protected]> | 2010-11-18 11:31:54 +0000 |
|---|---|---|
| committer | [email protected] <[email protected]> | 2010-11-18 11:31:54 +0000 |
| commit | d9cb84f4840c49993cfbcc80057488c50eae60cb (patch) | |
| tree | 9077055207bb6faa59cd565d37a77aa12e39b53c /examples/libc/ex1.c | |
| parent | 019b6542012115190cfbde415532c8940cc47500 (diff) | |
add libc testcase.
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@1061 bbd45198-f89e-11dd-88c7-29a3b14d5316
Diffstat (limited to 'examples/libc/ex1.c')
| -rw-r--r-- | examples/libc/ex1.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/examples/libc/ex1.c b/examples/libc/ex1.c new file mode 100644 index 0000000000..2acbfc3a39 --- /dev/null +++ b/examples/libc/ex1.c @@ -0,0 +1,37 @@ +/* Creates two threads, one printing 10000 "a"s, the other printing + 10000 "b"s. + Illustrates: thread creation, thread joining. */ + +#include <stddef.h> +#include <stdio.h> +#include <unistd.h> +#include "pthread.h" + +static void *process(void * arg) +{ + int i; + printf("Starting process %s\n", (char *)arg); + for (i = 0; i < 10000; i++) + write(1, (char *) arg, 1); + return NULL; +} + +#define sucfail(r) (r != 0 ? "failed" : "succeeded") +int libc_ex1(void) +{ + int pret, ret = 0; + pthread_t th_a, th_b; + void *retval; + + ret += (pret = pthread_create(&th_a, NULL, process, (void *)"a")); + printf("create a %s %d\n", sucfail(pret), pret); + ret += (pret = pthread_create(&th_b, NULL, process, (void *)"b")); + printf("create b %s %d\n", sucfail(pret), pret); + ret += (pret = pthread_join(th_a, &retval)); + printf("join a %s %d\n", sucfail(pret), pret); + ret += (pret = pthread_join(th_b, &retval)); + printf("join b %s %d\n", sucfail(pret), pret); + return ret; +} +#include <finsh.h> +FINSH_FUNCTION_EXPORT(libc_ex1, example 1 for libc); |
