optimize POSIX TSD for fast pthread_getspecific
[musl] / src / thread / pthread_setspecific.c
index 171cef4..55e46a8 100644 (file)
@@ -2,13 +2,7 @@
 
 int pthread_setspecific(pthread_key_t k, const void *x)
 {
-       struct pthread *self = pthread_self();
-       /* Handle the case of the main thread */
-       if (!self->tsd) {
-               if (!x) return 0;
-               if (!(self->tsd = calloc(sizeof(void *), PTHREAD_KEYS_MAX)))
-                       return ENOMEM;
-       }
+       struct pthread *self = __pthread_self();
        /* Avoid unnecessary COW */
        if (self->tsd[k] != x) {
                self->tsd[k] = (void *)x;