Index: third_party/grpc/include/grpc/support/tls_pthread.h |
diff --git a/third_party/tcmalloc/chromium/src/base/linuxthreads.h b/third_party/grpc/include/grpc/support/tls_pthread.h |
similarity index 66% |
copy from third_party/tcmalloc/chromium/src/base/linuxthreads.h |
copy to third_party/grpc/include/grpc/support/tls_pthread.h |
index 5c318fed7ec4c47e7bf082e315992e102abcd620..699ee6b1d382c3c481b8f4e8d954546a9f52d27a 100644 |
--- a/third_party/tcmalloc/chromium/src/base/linuxthreads.h |
+++ b/third_party/grpc/include/grpc/support/tls_pthread.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,32 @@ |
* (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_PTHREAD_H |
+#define GRPC_SUPPORT_TLS_PTHREAD_H |
-/* Include thread_lister.h to get the interface that we implement for linux. |
- */ |
+#include <grpc/support/log.h> /* for GPR_ASSERT */ |
+#include <pthread.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 based on pthread library calls. |
+ #include tls.h to use this - and see that file for documentation */ |
-/* Define the THREADS symbol to make sure that there is exactly one core dumper |
- * built into the library. |
- */ |
-#define THREADS "Linux /proc" |
+struct gpr_pthread_thread_local { |
+ pthread_key_t key; |
+}; |
+#define GPR_TLS_DECL(name) static struct gpr_pthread_thread_local name = {0} |
+ |
+#define gpr_tls_init(tls) GPR_ASSERT(0 == pthread_key_create(&(tls)->key, NULL)) |
+#define gpr_tls_destroy(tls) pthread_key_delete((tls)->key) |
+#define gpr_tls_get(tls) ((intptr_t)pthread_getspecific((tls)->key)) |
+#ifdef __cplusplus |
+extern "C" { |
+#endif |
+intptr_t gpr_tls_set(struct gpr_pthread_thread_local *tls, intptr_t value); |
+#ifdef __cplusplus |
+} |
#endif |
-#endif /* _LINUXTHREADS_H */ |
+#endif |