static pthread_key_t tls_key;
#elif defined(TSRM_ST)
static int tls_key;
+#elif defined(TSRM_WIN32)
+static DWORD tls_key;
#endif
#elif defined(TSRM_ST)
st_init();
st_key_create(&tls_key, 0);
+#elif defined(TSRM_WIN32)
+ tls_key = TlsAlloc();
#endif
tsrm_error_file = stderr;
#if defined(GNUPTH)
pth_kill();
#elif defined(PTHREADS)
- pthread_key_delete( tls_key );
+ pthread_key_delete(tls_key);
+#elif defined(TSRM_WIN32)
+ TlsFree(tls_key);
#endif
}
#if defined(PTHREADS)
/* Set thread local storage to this new thread resources structure */
- pthread_setspecific( tls_key, (void *)*thread_resources_ptr );
+ pthread_setspecific(tls_key, (void *) *thread_resources_ptr);
#elif defined(TSRM_ST)
st_thread_setspecific(tls_key, (void *) *thread_resources_ptr);
+#elif defined(TSRM_WIN32)
+ TlsSetValue(tls_key, (void *) *thread_resources_ptr);
#endif
if (tsrm_new_thread_begin_handler) {
thread_resources = pthread_getspecific(tls_key);
#elif defined(TSRM_ST)
thread_resources = st_thread_getspecific(tls_key);
+#elif defined(TSRM_WIN32)
+ thread_resources = TlsGetValue(tls_key);
#else
thread_resources = NULL;
#endif
}
#if defined(PTHREADS)
pthread_setspecific(tls_key, 0);
+#elif defined(TSRM_WIN32)
+ TlsSetValue(tls_key, 0);
#endif
free(thread_resources);
break;