summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCinder <cinder@sdf.org>2014-11-19 22:27:36 -0700
committerCinder <cinder@sdf.org>2014-11-19 22:27:36 -0700
commit6df6aef62176328c3b0fafa43fd611d4e25ef35c (patch)
tree055860a356bd100d94fbc5f782c04314d969e740
parent5f608c0a23487ae78cdc134b1e685a6c3cd4ec19 (diff)
OPEN-282 - Define LL_THREAD_LOCAL for our platforms in order to unify TLS support
-rwxr-xr-xindra/llcommon/llpreprocessor.h5
-rwxr-xr-xindra/llcommon/llthread.cpp6
-rw-r--r--indra/llcommon/llthreadlocalstorage.h14
3 files changed, 8 insertions, 17 deletions
diff --git a/indra/llcommon/llpreprocessor.h b/indra/llcommon/llpreprocessor.h
index 309165da7f..2c4bcc91f6 100755
--- a/indra/llcommon/llpreprocessor.h
+++ b/indra/llcommon/llpreprocessor.h
@@ -101,6 +101,11 @@
#endif
+#if LL_WINDOWS
+# define LL_THREAD_LOCAL __declspec(thread)
+#else
+# define LL_THREAD_LOCAL __thread
+#endif
// Static linking with apr on windows needs to be declared.
#if LL_WINDOWS && !LL_COMMON_LINK_SHARED
diff --git a/indra/llcommon/llthread.cpp b/indra/llcommon/llthread.cpp
index 22e8179b6c..c3f235c6ee 100755
--- a/indra/llcommon/llthread.cpp
+++ b/indra/llcommon/llthread.cpp
@@ -92,11 +92,7 @@ void set_thread_name( DWORD dwThreadID, const char* threadName)
//
//----------------------------------------------------------------------------
-#if LL_WINDOWS
-U32 __declspec(thread) sThreadID = 0;
-#else
-U32 __thread sThreadID = 0;
-#endif
+U32 LL_THREAD_LOCAL sThreadID = 0;
U32 LLThread::sIDIter = 0;
diff --git a/indra/llcommon/llthreadlocalstorage.h b/indra/llcommon/llthreadlocalstorage.h
index da648902aa..3b5786023f 100644
--- a/indra/llcommon/llthreadlocalstorage.h
+++ b/indra/llcommon/llthreadlocalstorage.h
@@ -139,20 +139,10 @@ public:
}
private:
-
-#if LL_WINDOWS
- static __declspec(thread) DERIVED_TYPE* sInstance;
-#else
- static __thread DERIVED_TYPE* sInstance;
-#endif
+ static LL_THREAD_LOCAL DERIVED_TYPE* sInstance;
};
-#if LL_WINDOWS
-template<typename DERIVED_TYPE>
-__declspec(thread) DERIVED_TYPE* LLThreadLocalSingletonPointer<DERIVED_TYPE>::sInstance = NULL;
-#else
template<typename DERIVED_TYPE>
-__thread DERIVED_TYPE* LLThreadLocalSingletonPointer<DERIVED_TYPE>::sInstance = NULL;
-#endif
+LL_THREAD_LOCAL DERIVED_TYPE* LLThreadLocalSingletonPointer<DERIVED_TYPE>::sInstance = NULL;
#endif // LL_LLTHREADLOCALSTORAGE_H