aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/stream_executor/lib/static_threadlocal.h
diff options
context:
space:
mode:
Diffstat (limited to 'tensorflow/stream_executor/lib/static_threadlocal.h')
-rw-r--r--tensorflow/stream_executor/lib/static_threadlocal.h30
1 files changed, 30 insertions, 0 deletions
diff --git a/tensorflow/stream_executor/lib/static_threadlocal.h b/tensorflow/stream_executor/lib/static_threadlocal.h
new file mode 100644
index 0000000000..9227b2cf0d
--- /dev/null
+++ b/tensorflow/stream_executor/lib/static_threadlocal.h
@@ -0,0 +1,30 @@
+// Copyright 2006 Google Inc.
+// All rights reserved.
+// Author: Yaz Saito (saito@google.com)
+#ifndef TENSORFLOW_STREAM_EXECUTOR_LIB_STATIC_THREADLOCAL_H_
+#define TENSORFLOW_STREAM_EXECUTOR_LIB_STATIC_THREADLOCAL_H_
+
+// For POD types in TLS mode, s_obj_VAR is the thread-local variable.
+#define SE_STATIC_THREAD_LOCAL_POD(_Type_, _var_) \
+ static thread_local _Type_ s_obj_##_var_; \
+ namespace { \
+ class ThreadLocal_##_var_ { \
+ public: \
+ ThreadLocal_##_var_() {} \
+ void Init() {} \
+ inline _Type_ *pointer() const { \
+ return &s_obj_##_var_; \
+ } \
+ inline _Type_ *safe_pointer() const { \
+ return &s_obj_##_var_; \
+ } \
+ _Type_ &get() const { \
+ return s_obj_##_var_; \
+ } \
+ bool is_native_tls() const { return true; } \
+ private: \
+ SE_DISALLOW_COPY_AND_ASSIGN(ThreadLocal_##_var_); \
+ } _var_; \
+ }
+
+#endif // TENSORFLOW_STREAM_EXECUTOR_LIB_STATIC_THREADLOCAL_H_