summaryrefslogtreecommitdiff
path: root/lib/asan/asan_posix.cc
diff options
context:
space:
mode:
authorKostya Serebryany <kcc@google.com>2012-01-11 02:21:06 +0000
committerKostya Serebryany <kcc@google.com>2012-01-11 02:21:06 +0000
commitcc4e6862c6a8f8f3ead96bd32b815184a36faded (patch)
treedca3f083055b421f511db24f1b530efdb1a40a19 /lib/asan/asan_posix.cc
parentaf3441580555ceed092170232cd5f2cc180f19f4 (diff)
[asan] move TSD code into asan_posix.cc
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@147913 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/asan/asan_posix.cc')
-rw-r--r--lib/asan/asan_posix.cc25
1 files changed, 25 insertions, 0 deletions
diff --git a/lib/asan/asan_posix.cc b/lib/asan/asan_posix.cc
index a6d0eda79..2bc9e4853 100644
--- a/lib/asan/asan_posix.cc
+++ b/lib/asan/asan_posix.cc
@@ -18,6 +18,7 @@
#include "asan_stack.h"
#include "asan_thread_registry.h"
+#include <pthread.h>
#include <signal.h>
#include <sys/time.h>
#include <sys/resource.h>
@@ -72,6 +73,30 @@ int GetPid() {
return getpid();
}
+uintptr_t GetThreadSelf() {
+ return (uintptr_t)pthread_self();
+}
+
+// ---------------------- TSD ---------------- {{{1
+
+static pthread_key_t tsd_key;
+static bool tsd_key_inited = false;
+void AsanTSDInit() {
+ CHECK(!tsd_key_inited);
+ tsd_key_inited = true;
+ CHECK(0 == pthread_key_create(&tsd_key, 0));
+}
+
+void *AsanTSDGet() {
+ CHECK(tsd_key_inited);
+ return pthread_getspecific(tsd_key);
+}
+
+void AsanTSDSet(void *tsd) {
+ CHECK(tsd_key_inited);
+ pthread_setspecific(tsd_key, tsd);
+}
+
} // namespace __asan
#endif // __linux__ || __APPLE_