]> rtime.felk.cvut.cz Git - l4.git/blob - l4/pkg/valgrind/src/valgrind-3.6.0-svn/helgrind/tests/tc02_simple_tls.c
Inital import
[l4.git] / l4 / pkg / valgrind / src / valgrind-3.6.0-svn / helgrind / tests / tc02_simple_tls.c
1
2 #include <pthread.h>
3 #include <stdio.h>
4 #include <stdlib.h>
5
6 /* Simple test program, no race: parent only modified x after child
7    has modified it and then joined with the parent.  Tests simple
8    thread lifetime segment handling. */
9
10 int x = 0;
11
12 void* child_fn ( void* arg )
13 {
14    /* Unprotected relative to parent, but in child's segment only */
15    x++;
16    return NULL;
17 }
18
19 int main ( void )
20 {
21    pthread_t child;
22
23    x++; /* happens in parent's segment */
24
25    if (pthread_create(&child, NULL, child_fn, NULL)) {
26       perror("pthread_create");
27       exit(1);
28    }
29
30    if (pthread_join(child, NULL)) {
31       perror("pthread join");
32       exit(1);
33    }
34
35    /* Now back in parent's segment */
36    x++;
37
38    return 0;
39 }