Chromium Code Reviews| 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); |