]> git.cworth.org Git - apitrace/blobdiff - common/os_thread.hpp
os: Fallback to OS TLS when compiler does not support it (issue #120).
[apitrace] / common / os_thread.hpp
index da6e106487e5e7c4505a2ae3efb05cc88e36af71..fb340e162c2401e4bc019326b9f44d413acab544 100644 (file)
 #endif
 
 
+/*
+ * These features are not supported on Windows XP
+ */
+#define USE_WIN32_DECLSPEC_THREAD 0
 #define USE_WIN32_CONDITION_VARIABLES 0
 
 
  * - http://gcc.gnu.org/onlinedocs/gcc-4.6.3/gcc/Thread_002dLocal.html
  * - http://msdn.microsoft.com/en-us/library/9w1sdazb.aspx
  */
-#if defined(_MSC_VER)
-#  define thread_specific __declspec(thread)
-#elif defined(__GNUC__)
-#  define thread_specific __thread
-#else
-#  define thread_specific
-#  error "Unsupported compiler"
+#if !defined(_WIN32) || USE_WIN32_DECLSPEC_THREAD
+#  if defined(_MSC_VER)
+#    define OS_THREAD_SPECIFIC_PTR(_type) __declspec(thread) _type *
+#  elif defined(__GNUC__)
+#    define OS_THREAD_SPECIFIC_PTR(_type) __thread _type *
+#  endif
+#endif
+#if !defined(OS_THREAD_SPECIFIC_PTR)
+#  define OS_THREAD_SPECIFIC_PTR(_type) os::thread_specific_ptr< _type >
 #endif