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 <unistd.h>
13
14int __thread n;
15
16void *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
26int main()
27{
28	pthread_t td;
29	int i;
30
31	for (i = 0; i < 1000; ++i) {
32		pthread_create(&td, NULL, f1, NULL);
33		pthread_join(td, NULL);
34	}
35	sleep(2);
36	for (i = 0; i < 1000; ++i) {
37		pthread_create(&td, NULL, f1, NULL);
38		pthread_join(td, NULL);
39	}
40	return (0);
41}
42