Merge "Make libcutils' thread local stuff more clearly deprecated."
diff --git a/libcutils/include/cutils/threads.h b/libcutils/include/cutils/threads.h
index ba4846e..bbbba6d 100644
--- a/libcutils/include/cutils/threads.h
+++ b/libcutils/include/cutils/threads.h
@@ -14,8 +14,7 @@
  * limitations under the License.
  */
 
-#ifndef _LIBS_CUTILS_THREADS_H
-#define _LIBS_CUTILS_THREADS_H
+#pragma once
 
 #include  <sys/types.h>
 
@@ -29,16 +28,6 @@
 extern "C" {
 #endif
 
-//
-// Deprecated: use android::base::GetThreadId instead, which doesn't truncate on Mac/Windows.
-//
-
-extern pid_t gettid();
-
-//
-// Deprecated: use `_Thread_local` in C or `thread_local` in C++.
-//
-
 #if !defined(_WIN32)
 
 typedef struct {
@@ -49,29 +38,24 @@
 
 #define  THREAD_STORE_INITIALIZER  { PTHREAD_MUTEX_INITIALIZER, 0, 0 }
 
-#else // !defined(_WIN32)
+#endif
 
-typedef struct {
-    int               lock_init;
-    int               has_tls;
-    DWORD             tls;
-    CRITICAL_SECTION  lock;
-} thread_store_t;
+//
+// Deprecated: use android::base::GetThreadId instead, which doesn't truncate on Mac/Windows.
+//
+extern pid_t gettid();
 
-#define  THREAD_STORE_INITIALIZER  { 0, 0, 0, {0, 0, 0, 0, 0, 0} }
-
-#endif // !defined(_WIN32)
-
-typedef void  (*thread_store_destruct_t)(void*  value);
-
-extern void*  thread_store_get(thread_store_t*  store);
-
-extern void   thread_store_set(thread_store_t*          store,
-                               void*                    value,
-                               thread_store_destruct_t  destroy);
+//
+// Deprecated: use `_Thread_local` in C or `thread_local` in C++.
+//
+#if !defined(_WIN32)
+typedef void (*thread_store_destruct_t)(void* x);
+extern void* thread_store_get(thread_store_t* x)
+        __attribute__((__deprecated__("use thread_local instead")));
+extern void thread_store_set(thread_store_t* x, void* y, thread_store_destruct_t z)
+        __attribute__((__deprecated__("use thread_local instead")));
+#endif
 
 #ifdef __cplusplus
 }
 #endif
-
-#endif /* _LIBS_CUTILS_THREADS_H */
diff --git a/libcutils/threads.cpp b/libcutils/threads.cpp
index a7e6b2d..eac63b5 100644
--- a/libcutils/threads.cpp
+++ b/libcutils/threads.cpp
@@ -47,7 +47,6 @@
 #endif  // __ANDROID__
 
 #if !defined(_WIN32)
-
 void*  thread_store_get( thread_store_t*  store )
 {
     if (!store->has_tls)
@@ -72,40 +71,4 @@
 
     pthread_setspecific( store->tls, value );
 }
-
-#else /* !defined(_WIN32) */
-void*  thread_store_get( thread_store_t*  store )
-{
-    if (!store->has_tls)
-        return NULL;
-
-    return (void*) TlsGetValue( store->tls );
-}
-
-void   thread_store_set( thread_store_t*          store,
-                         void*                    value,
-                         thread_store_destruct_t  /*destroy*/ )
-{
-    /* XXX: can't use destructor on thread exit */
-    if (!store->lock_init) {
-        store->lock_init = -1;
-        InitializeCriticalSection( &store->lock );
-        store->lock_init = -2;
-    } else while (store->lock_init != -2) {
-        Sleep(10); /* 10ms */
-    }
-
-    EnterCriticalSection( &store->lock );
-    if (!store->has_tls) {
-        store->tls = TlsAlloc();
-        if (store->tls == TLS_OUT_OF_INDEXES) {
-            LeaveCriticalSection( &store->lock );
-            return;
-        }
-        store->has_tls = 1;
-    }
-    LeaveCriticalSection( &store->lock );
-
-    TlsSetValue( store->tls, value );
-}
-#endif /* !defined(_WIN32) */
+#endif