- update source.
[platform/framework/web/crosswalk.git] / src / base / threading / thread_local_storage_posix.cc
index 75da5a7..ebaf400 100644 (file)
@@ -8,42 +8,27 @@
 
 namespace base {
 
-ThreadLocalStorage::Slot::Slot(TLSDestructorFunc destructor) {
-  initialized_ = false;
-  key_ = 0;
-  Initialize(destructor);
-}
-
-bool ThreadLocalStorage::StaticSlot::Initialize(TLSDestructorFunc destructor) {
-  DCHECK(!initialized_);
-  int error = pthread_key_create(&key_, destructor);
-  if (error) {
-    NOTREACHED();
-    return false;
-  }
+namespace internal {
 
-  initialized_ = true;
-  return true;
+bool PlatformThreadLocalStorage::AllocTLS(TLSKey* key) {
+  return !pthread_key_create(key,
+      base::internal::PlatformThreadLocalStorage::OnThreadExit);
 }
 
-void ThreadLocalStorage::StaticSlot::Free() {
-  DCHECK(initialized_);
-  int error = pthread_key_delete(key_);
-  if (error)
-    NOTREACHED();
-  initialized_ = false;
+void PlatformThreadLocalStorage::FreeTLS(TLSKey key) {
+  int ret = pthread_key_delete(key);
+  DCHECK_EQ(ret, 0);
 }
 
-void* ThreadLocalStorage::StaticSlot::Get() const {
-  DCHECK(initialized_);
-  return pthread_getspecific(key_);
+void* PlatformThreadLocalStorage::GetTLSValue(TLSKey key) {
+  return pthread_getspecific(key);
 }
 
-void ThreadLocalStorage::StaticSlot::Set(void* value) {
-  DCHECK(initialized_);
-  int error = pthread_setspecific(key_, value);
-  if (error)
-    NOTREACHED();
+void PlatformThreadLocalStorage::SetTLSValue(TLSKey key, void* value) {
+  int ret = pthread_setspecific(key, value);
+  DCHECK_EQ(ret, 0);
 }
 
+}  // namespace internal
+
 }  // namespace base