xref: /llvm-project/lldb/test/API/functionalities/tsan/thread_numbers/main.c (revision fdea9a4ec9b0d9585b8fe8a612686d9f44f40ddc)
1*99451b44SJordan Rupprecht #include <pthread.h>
2*99451b44SJordan Rupprecht #include <stdio.h>
3*99451b44SJordan Rupprecht #include <stdlib.h>
4*99451b44SJordan Rupprecht #include <unistd.h>
5*99451b44SJordan Rupprecht 
6*99451b44SJordan Rupprecht char *pointer;
7*99451b44SJordan Rupprecht 
nothing(void * p)8*99451b44SJordan Rupprecht void *nothing(void *p) {
9*99451b44SJordan Rupprecht     return NULL;
10*99451b44SJordan Rupprecht }
11*99451b44SJordan Rupprecht 
f1(void * p)12*99451b44SJordan Rupprecht void *f1(void *p) {
13*99451b44SJordan Rupprecht     pointer[0] = 'x';
14*99451b44SJordan Rupprecht     sleep(100);
15*99451b44SJordan Rupprecht     return NULL;
16*99451b44SJordan Rupprecht }
17*99451b44SJordan Rupprecht 
f2(void * p)18*99451b44SJordan Rupprecht void *f2(void *p) {
19*99451b44SJordan Rupprecht     pointer[0] = 'y';
20*99451b44SJordan Rupprecht     sleep(100);
21*99451b44SJordan Rupprecht     return NULL;
22*99451b44SJordan Rupprecht }
23*99451b44SJordan Rupprecht 
main(int argc,char const * argv[])24*99451b44SJordan Rupprecht int main (int argc, char const *argv[])
25*99451b44SJordan Rupprecht {
26*99451b44SJordan Rupprecht     pointer = (char *)malloc(10);
27*99451b44SJordan Rupprecht 
28*99451b44SJordan Rupprecht     for (int i = 0; i < 3; i++) {
29*99451b44SJordan Rupprecht         pthread_t t;
30*99451b44SJordan Rupprecht         pthread_create(&t, NULL, nothing, NULL);
31*99451b44SJordan Rupprecht         pthread_join(t, NULL);
32*99451b44SJordan Rupprecht     }
33*99451b44SJordan Rupprecht 
34*99451b44SJordan Rupprecht     pthread_t t1;
35*99451b44SJordan Rupprecht     pthread_create(&t1, NULL, f1, NULL);
36*99451b44SJordan Rupprecht 
37*99451b44SJordan Rupprecht     for (int i = 0; i < 3; i++) {
38*99451b44SJordan Rupprecht         pthread_t t;
39*99451b44SJordan Rupprecht         pthread_create(&t, NULL, nothing, NULL);
40*99451b44SJordan Rupprecht         pthread_join(t, NULL);
41*99451b44SJordan Rupprecht     }
42*99451b44SJordan Rupprecht 
43*99451b44SJordan Rupprecht     pthread_t t2;
44*99451b44SJordan Rupprecht     pthread_create(&t2, NULL, f2, NULL);
45*99451b44SJordan Rupprecht 
46*99451b44SJordan Rupprecht     pthread_join(t1, NULL);
47*99451b44SJordan Rupprecht     pthread_join(t2, NULL);
48*99451b44SJordan Rupprecht 
49*99451b44SJordan Rupprecht     return 0;
50*99451b44SJordan Rupprecht }
51