| 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
|
|
|