Index: third_party/grpc/src/core/iomgr/wakeup_fd_posix.c |
diff --git a/third_party/tcmalloc/chromium/src/base/spinlock_win32-inl.h b/third_party/grpc/src/core/iomgr/wakeup_fd_posix.c |
similarity index 59% |
copy from third_party/tcmalloc/chromium/src/base/spinlock_win32-inl.h |
copy to third_party/grpc/src/core/iomgr/wakeup_fd_posix.c |
index 9e77311c86a0c91687704284fe37107baeb2229b..f40be081b0567807d94d2716aeeef750b38ff458 100644 |
--- a/third_party/tcmalloc/chromium/src/base/spinlock_win32-inl.h |
+++ b/third_party/grpc/src/core/iomgr/wakeup_fd_posix.c |
@@ -1,10 +1,12 @@ |
-/* Copyright (c) 2009, Google Inc. |
+/* |
+ * |
+ * Copyright 2015, Google Inc. |
* All rights reserved. |
- * |
+ * |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions are |
* met: |
- * |
+ * |
* * Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* * Redistributions in binary form must reproduce the above |
@@ -14,7 +16,7 @@ |
* * Neither the name of Google Inc. nor the names of its |
* contributors may be used to endorse or promote products derived from |
* this software without specific prior written permission. |
- * |
+ * |
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
@@ -27,34 +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. |
* |
- * --- |
- * This file is a Win32-specific part of spinlock_internal.cc |
*/ |
+#include <grpc/support/port_platform.h> |
+ |
+#ifdef GPR_POSIX_WAKEUP_FD |
-#include <windows.h> |
+#include "src/core/iomgr/wakeup_fd_posix.h" |
+#include "src/core/iomgr/wakeup_fd_pipe.h" |
+#include <stddef.h> |
-namespace base { |
-namespace internal { |
+static const grpc_wakeup_fd_vtable *wakeup_fd_vtable = NULL; |
+int grpc_allow_specialized_wakeup_fd = 1; |
-void SpinLockDelay(volatile Atomic32 *w, int32 value, int loop) { |
- if (loop == 0) { |
- } else if (loop == 1) { |
- Sleep(0); |
+void grpc_wakeup_fd_global_init(void) { |
+ if (grpc_allow_specialized_wakeup_fd && |
+ grpc_specialized_wakeup_fd_vtable.check_availability()) { |
+ wakeup_fd_vtable = &grpc_specialized_wakeup_fd_vtable; |
} else { |
- // TODO(dmikurube): Re-enable the commented-out code. |
- // We commented out the following line and used the old code "Sleep(1)" |
- // since base/atomicops-internals-windows.h doesn't support 64-bit |
- // operations. |
- // |
- // Commended-out code: |
- // Sleep(base::internal::SuggestedDelayNS(loop) / 1000000); |
- Sleep(1); |
+ wakeup_fd_vtable = &grpc_pipe_wakeup_fd_vtable; |
} |
} |
-void SpinLockWake(volatile Atomic32 *w, bool all) { |
+void grpc_wakeup_fd_global_destroy(void) { wakeup_fd_vtable = NULL; } |
+ |
+void grpc_wakeup_fd_init(grpc_wakeup_fd *fd_info) { |
+ wakeup_fd_vtable->init(fd_info); |
+} |
+ |
+void grpc_wakeup_fd_consume_wakeup(grpc_wakeup_fd *fd_info) { |
+ wakeup_fd_vtable->consume(fd_info); |
+} |
+ |
+void grpc_wakeup_fd_wakeup(grpc_wakeup_fd *fd_info) { |
+ wakeup_fd_vtable->wakeup(fd_info); |
+} |
+ |
+void grpc_wakeup_fd_destroy(grpc_wakeup_fd *fd_info) { |
+ wakeup_fd_vtable->destroy(fd_info); |
} |
-} // namespace internal |
-} // namespace base |
+#endif /* GPR_POSIX_WAKEUP_FD */ |