| Index: base/thread_local_storage.h
|
| ===================================================================
|
| --- base/thread_local_storage.h (revision 70317)
|
| +++ base/thread_local_storage.h (working copy)
|
| @@ -1,95 +0,0 @@
|
| -// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#ifndef BASE_THREAD_LOCAL_STORAGE_H_
|
| -#define BASE_THREAD_LOCAL_STORAGE_H_
|
| -#pragma once
|
| -
|
| -#include "base/basictypes.h"
|
| -
|
| -#if defined(OS_POSIX)
|
| -#include <pthread.h>
|
| -#endif
|
| -
|
| -// Wrapper for thread local storage. This class doesn't do much except provide
|
| -// an API for portability.
|
| -class ThreadLocalStorage {
|
| - public:
|
| -
|
| - // Prototype for the TLS destructor function, which can be optionally used to
|
| - // cleanup thread local storage on thread exit. 'value' is the data that is
|
| - // stored in thread local storage.
|
| - typedef void (*TLSDestructorFunc)(void* value);
|
| -
|
| - // A key representing one value stored in TLS.
|
| - class Slot {
|
| - public:
|
| - explicit Slot(TLSDestructorFunc destructor = NULL);
|
| -
|
| - // This constructor should be used for statics.
|
| - // It returns an uninitialized Slot.
|
| - explicit Slot(base::LinkerInitialized x) {}
|
| -
|
| - // Set up the TLS slot. Called by the constructor.
|
| - // 'destructor' is a pointer to a function to perform per-thread cleanup of
|
| - // this object. If set to NULL, no cleanup is done for this TLS slot.
|
| - // Returns false on error.
|
| - bool Initialize(TLSDestructorFunc destructor);
|
| -
|
| - // Free a previously allocated TLS 'slot'.
|
| - // If a destructor was set for this slot, removes
|
| - // the destructor so that remaining threads exiting
|
| - // will not free data.
|
| - void Free();
|
| -
|
| - // Get the thread-local value stored in slot 'slot'.
|
| - // Values are guaranteed to initially be zero.
|
| - void* Get() const;
|
| -
|
| - // Set the thread-local value stored in slot 'slot' to
|
| - // value 'value'.
|
| - void Set(void* value);
|
| -
|
| - bool initialized() const { return initialized_; }
|
| -
|
| - private:
|
| - // The internals of this struct should be considered private.
|
| - bool initialized_;
|
| -#if defined(OS_WIN)
|
| - int slot_;
|
| -#elif defined(OS_POSIX)
|
| - pthread_key_t key_;
|
| -#endif
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(Slot);
|
| - };
|
| -
|
| -#if defined(OS_WIN)
|
| - // Function called when on thread exit to call TLS
|
| - // destructor functions. This function is used internally.
|
| - static void ThreadExit();
|
| -
|
| - private:
|
| - // Function to lazily initialize our thread local storage.
|
| - static void **Initialize();
|
| -
|
| - private:
|
| - // The maximum number of 'slots' in our thread local storage stack.
|
| - // For now, this is fixed. We could either increase statically, or
|
| - // we could make it dynamic in the future.
|
| - static const int kThreadLocalStorageSize = 64;
|
| -
|
| - static long tls_key_;
|
| - static long tls_max_;
|
| - static TLSDestructorFunc tls_destructors_[kThreadLocalStorageSize];
|
| -#endif // OS_WIN
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(ThreadLocalStorage);
|
| -};
|
| -
|
| -// Temporary backwards-compatible name.
|
| -// TODO(evanm): replace all usage of TLSSlot.
|
| -typedef ThreadLocalStorage::Slot TLSSlot;
|
| -
|
| -#endif // BASE_THREAD_LOCAL_STORAGE_H_
|
|
|