Index: runtime/platform/thread_linux.cc |
diff --git a/runtime/platform/thread_linux.cc b/runtime/platform/thread_linux.cc |
index 7efa2b5d09b2f6343813ffce8a3d16b01d0e586a..1cd1d71939088c37351d4993a6758348a58f73a7 100644 |
--- a/runtime/platform/thread_linux.cc |
+++ b/runtime/platform/thread_linux.cc |
@@ -103,6 +103,37 @@ int Thread::Start(ThreadStartFunction function, uword parameter) { |
} |
+ThreadLocalKey Thread::kInvalidThreadLocal = static_cast<pthread_key_t>(-1); |
+ |
+ |
+ThreadLocalKey Thread::CreateThreadLocal() { |
+ pthread_key_t key = kInvalidThreadLocal; |
+ int result = pthread_key_create(&key, NULL); |
siva
2012/02/06 19:29:37
ASSERT(key != kInvalidThreadLocal);
Søren Gjesse
2012/02/07 09:13:59
Done.
|
+ VALIDATE_PTHREAD_RESULT(result); |
+ return key; |
+} |
+ |
+ |
+void Thread::DeleteThreadLocal(ThreadLocalKey key) { |
+ ASSERT(key != kInvalidThreadLocal); |
+ int result = pthread_key_delete(key); |
+ VALIDATE_PTHREAD_RESULT(result); |
+} |
+ |
+ |
+uword Thread::GetThreadLocal(ThreadLocalKey key) { |
+ ASSERT(key != kInvalidThreadLocal); |
+ return reinterpret_cast<uword>(pthread_getspecific(key)); |
+} |
siva
2012/02/06 19:29:37
Can this be defined in the header file so that it
Søren Gjesse
2012/02/07 09:13:59
Added a class ThreadInlineImpl to platform specifi
|
+ |
+ |
+void Thread::SetThreadLocal(ThreadLocalKey key, uword value) { |
+ ASSERT(key != kInvalidThreadLocal); |
+ int result = pthread_setspecific(key, reinterpret_cast<void*>(value)); |
+ VALIDATE_PTHREAD_RESULT(result); |
+} |
+ |
+ |
Mutex::Mutex() { |
pthread_mutexattr_t attr; |
int result = pthread_mutexattr_init(&attr); |