summaryrefslogtreecommitdiff
path: root/src/env/__reset_tls.c
blob: bd61f311e7c41b2d4a277d631b46580e55fb5489 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#ifndef SHARED

#include <string.h>
#include "pthread_impl.h"

extern struct tls_image {
	void *image;
	size_t len, size, align;
} __static_tls;

#define T __static_tls

void __reset_tls()
{
	if (!T.size) return;
	pthread_t self = __pthread_self();
	memcpy(self->dtv[1], T.image, T.len);
	memset((char *)self->dtv[1]+T.len, 0, T.size-T.len);
}

#endif