Index: third_party/grpc/src/ruby/ext/grpc/rb_loader.c |
diff --git a/third_party/tcmalloc/vendor/src/base/linuxthreads.h b/third_party/grpc/src/ruby/ext/grpc/rb_loader.c |
similarity index 66% |
copy from third_party/tcmalloc/vendor/src/base/linuxthreads.h |
copy to third_party/grpc/src/ruby/ext/grpc/rb_loader.c |
index 5c318fed7ec4c47e7bf082e315992e102abcd620..242535f164ef63889fa1950d1c4ca9a4b11c3853 100644 |
--- a/third_party/tcmalloc/vendor/src/base/linuxthreads.h |
+++ b/third_party/grpc/src/ruby/ext/grpc/rb_loader.c |
@@ -1,4 +1,6 @@ |
-/* Copyright (c) 2005-2007, Google Inc. |
+/* |
+ * |
+ * Copyright 2016, Google Inc. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
@@ -27,27 +29,44 @@ |
* (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 |
+#include "rb_grpc_imports.generated.h" |
-/* Include thread_lister.h to get the interface that we implement for linux. |
- */ |
+#if GPR_WIN32 |
+#include <tchar.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) |
+int grpc_rb_load_core() { |
+#if GPR_ARCH_64 |
+ TCHAR fname[] = _T("grpc_c.64.ruby"); |
+#else |
+ TCHAR fname[] = _T("grpc_c.32.ruby"); |
+#endif |
+ HMODULE module = GetModuleHandle(_T("grpc_c.so")); |
+ TCHAR path[2048 + 32] = _T(""); |
+ LPTSTR seek_back = NULL; |
+ GetModuleFileName(module, path, 2048); |
-/* Define the THREADS symbol to make sure that there is exactly one core dumper |
- * built into the library. |
- */ |
-#define THREADS "Linux /proc" |
+ seek_back = _tcsrchr(path, _T('\\')); |
-#endif |
+ while (seek_back) { |
+ HMODULE grpc_c; |
+ _tcscpy(seek_back + 1, fname); |
+ grpc_c = LoadLibrary(path); |
+ if (grpc_c) { |
+ grpc_rb_load_imports(grpc_c); |
+ return 1; |
+ } else { |
+ *seek_back = _T('\0'); |
+ seek_back = _tcsrchr(path, _T('\\')); |
+ } |
+ } |
+ |
+ return 0; |
+} |
+ |
+#else |
-#endif /* _LINUXTHREADS_H */ |
+int grpc_rb_load_core() { return 1; } |
+ |
+#endif |