xref: /freebsd/tools/regression/tls/ttls4/ttls4.c (revision 43a5ec4eb41567cc92586503212743d89686d78f)
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  * $FreeBSD$
8  */
9 
10 #include <stdio.h>
11 #include <pthread.h>
12 #include <stdlib.h>
13 #include <unistd.h>
14 
15 int __thread n;
16 
17 void
18 *f1(void *arg)
19 {
20 	if (n != 0) {
21 		printf("bug, n == %d \n", n);
22 		exit(1);
23 	}
24 	n = 1;
25 	return (0);
26 }
27 
28 int
29 main(void)
30 {
31 	pthread_t td;
32 	int i;
33 
34 	for (i = 0; i < 1000; ++i) {
35 		pthread_create(&td, NULL, f1, NULL);
36 		pthread_join(td, NULL);
37 	}
38 	sleep(2);
39 	for (i = 0; i < 1000; ++i) {
40 		pthread_create(&td, NULL, f1, NULL);
41 		pthread_join(td, NULL);
42 	}
43 	return (0);
44 }
45