| Index: fusl/src/env/__reset_tls.c
|
| diff --git a/fusl/src/env/__reset_tls.c b/fusl/src/env/__reset_tls.c
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..677e57f58b45c6db27c9d1f0ceda3f1b72b08c95
|
| --- /dev/null
|
| +++ b/fusl/src/env/__reset_tls.c
|
| @@ -0,0 +1,16 @@
|
| +#include <string.h>
|
| +#include "pthread_impl.h"
|
| +#include "libc.h"
|
| +
|
| +void __reset_tls()
|
| +{
|
| + pthread_t self = __pthread_self();
|
| + struct tls_module *p;
|
| + size_t i, n = (size_t)self->dtv[0];
|
| + if (n) for (p=libc.tls_head, i=1; i<=n; i++, p=p->next) {
|
| + if (!self->dtv[i]) continue;
|
| + memcpy(self->dtv[i], p->image, p->len);
|
| + memset((char *)self->dtv[i]+p->len, 0,
|
| + p->size - p->len);
|
| + }
|
| +}
|
|
|