diff options
author | Kostya Serebryany <kcc@google.com> | 2012-01-11 02:21:06 +0000 |
---|---|---|
committer | Kostya Serebryany <kcc@google.com> | 2012-01-11 02:21:06 +0000 |
commit | cc4e6862c6a8f8f3ead96bd32b815184a36faded (patch) | |
tree | dca3f083055b421f511db24f1b530efdb1a40a19 /lib/asan/asan_posix.cc | |
parent | af3441580555ceed092170232cd5f2cc180f19f4 (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.cc | 25 |
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_ |