xref: /freebsd/tools/regression/tls/ttls4/ttls4.c (revision 5ca8e32633c4ffbbcd6762e5888b6a4ba0708c6c)
1 /*
2  * This program tests if a new thread's initial tls data
3  * is clean.
4  *
5  * David Xu <davidxu@freebsd.org>
6  */
7 
8 #include <stdio.h>
9 #include <pthread.h>
10 #include <stdlib.h>
11 #include <unistd.h>
12 
13 int __thread n;
14 
15 void
16 *f1(void *arg)
17 {
18 	if (n != 0) {
19 		printf("bug, n == %d \n", n);
20 		exit(1);
21 	}
22 	n = 1;
23 	return (0);
24 }
25 
26 int
27 main(void)
28 {
29 	pthread_t td;
30 	int i;
31 
32 	for (i = 0; i < 1000; ++i) {
33 		pthread_create(&td, NULL, f1, NULL);
34 		pthread_join(td, NULL);
35 	}
36 	sleep(2);
37 	for (i = 0; i < 1000; ++i) {
38 		pthread_create(&td, NULL, f1, NULL);
39 		pthread_join(td, NULL);
40 	}
41 	return (0);
42 }
43