| Index: third_party/grpc/include/grpc/support/tls.h
|
| diff --git a/third_party/tcmalloc/chromium/src/base/linuxthreads.h b/third_party/grpc/include/grpc/support/tls.h
|
| similarity index 60%
|
| copy from third_party/tcmalloc/chromium/src/base/linuxthreads.h
|
| copy to third_party/grpc/include/grpc/support/tls.h
|
| index 5c318fed7ec4c47e7bf082e315992e102abcd620..43addc7f14556c8cb2832591b8eed4e9f5a77ca6 100644
|
| --- a/third_party/tcmalloc/chromium/src/base/linuxthreads.h
|
| +++ b/third_party/grpc/include/grpc/support/tls.h
|
| @@ -1,4 +1,6 @@
|
| -/* Copyright (c) 2005-2007, Google Inc.
|
| +/*
|
| + *
|
| + * Copyright 2015, Google Inc.
|
| * All rights reserved.
|
| *
|
| * Redistribution and use in source and binary forms, with or without
|
| @@ -27,27 +29,49 @@
|
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| *
|
| - * ---
|
| - * Author: Markus Gutschke
|
| */
|
|
|
| -#ifndef _LINUXTHREADS_H
|
| -#define _LINUXTHREADS_H
|
| +#ifndef GRPC_SUPPORT_TLS_H
|
| +#define GRPC_SUPPORT_TLS_H
|
|
|
| -/* Include thread_lister.h to get the interface that we implement for linux.
|
| - */
|
| +#include <grpc/support/port_platform.h>
|
|
|
| -/* We currently only support x86-32 and x86-64 on Linux. Porting to other
|
| - * related platforms should not be difficult.
|
| - */
|
| -#if (defined(__i386__) || defined(__x86_64__) || defined(__ARM_ARCH_3__) || \
|
| - defined(__mips__) || defined(__PPC__)) && defined(__linux)
|
| +/* Thread local storage.
|
|
|
| -/* Define the THREADS symbol to make sure that there is exactly one core dumper
|
| - * built into the library.
|
| - */
|
| -#define THREADS "Linux /proc"
|
| + A minimal wrapper that should be implementable across many compilers,
|
| + and implementable efficiently across most modern compilers.
|
| +
|
| + Thread locals have type intptr_t.
|
| +
|
| + Declaring a thread local variable 'foo':
|
| + GPR_TLS_DECL(foo);
|
| + Thread locals always have static scope.
|
| +
|
| + Initializing a thread local (must be done at library initialization
|
| + time):
|
| + gpr_tls_init(&foo);
|
| +
|
| + Destroying a thread local:
|
| + gpr_tls_destroy(&foo);
|
|
|
| + Setting a thread local (returns new_value):
|
| + gpr_tls_set(&foo, new_value);
|
| +
|
| + Accessing a thread local:
|
| + current_value = gpr_tls_get(&foo, value);
|
| +
|
| + ALL functions here may be implemented as macros. */
|
| +
|
| +#ifdef GPR_GCC_TLS
|
| +#include <grpc/support/tls_gcc.h>
|
| +#endif
|
| +
|
| +#ifdef GPR_MSVC_TLS
|
| +#include <grpc/support/tls_msvc.h>
|
| +#endif
|
| +
|
| +#ifdef GPR_PTHREAD_TLS
|
| +#include <grpc/support/tls_pthread.h>
|
| #endif
|
|
|
| -#endif /* _LINUXTHREADS_H */
|
| +#endif
|
|
|