aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Craig Tiller <ctiller@google.com>2016-02-08 10:23:11 -0800
committerGravatar Craig Tiller <ctiller@google.com>2016-02-08 10:23:11 -0800
commit91aaee429be3b0e00a78120e58b38233ca51b16c (patch)
tree236012b191da7127f46ff6c3fe353f546799ecdf
parent55e813f94669dbcc449ecb787dd3d767d43fb87f (diff)
parent0a7468a537f3cc22160247ef88968c8c2d5af118 (diff)
Merge pull request #5096 from a-veitch/win_cv_wait
Add timespan support for win32 gpr_cv_wait.
-rw-r--r--include/grpc/impl/codegen/sync.h3
-rw-r--r--src/core/support/sync_win32.c1
2 files changed, 3 insertions, 1 deletions
diff --git a/include/grpc/impl/codegen/sync.h b/include/grpc/impl/codegen/sync.h
index 7086b5d371..04ff0dc5bf 100644
--- a/include/grpc/impl/codegen/sync.h
+++ b/include/grpc/impl/codegen/sync.h
@@ -115,7 +115,8 @@ GPR_API void gpr_cv_destroy(gpr_cv *cv);
/* Atomically release *mu and wait on *cv. When the calling thread is woken
from *cv or the deadline abs_deadline is exceeded, execute gpr_mu_lock(mu)
and return whether the deadline was exceeded. Use
- abs_deadline==gpr_inf_future for no deadline. May return even when not
+ abs_deadline==gpr_inf_future for no deadline. abs_deadline can be either
+ an absolute deadline, or a GPR_TIMESPAN. May return even when not
woken explicitly. Requires: *mu and *cv initialized; the calling thread
holds an exclusive lock on *mu. */
GPR_API int gpr_cv_wait(gpr_cv *cv, gpr_mu *mu, gpr_timespec abs_deadline);
diff --git a/src/core/support/sync_win32.c b/src/core/support/sync_win32.c
index 84d412a75f..41998ebcb6 100644
--- a/src/core/support/sync_win32.c
+++ b/src/core/support/sync_win32.c
@@ -87,6 +87,7 @@ int gpr_cv_wait(gpr_cv *cv, gpr_mu *mu, gpr_timespec abs_deadline) {
0) {
SleepConditionVariableCS(cv, &mu->cs, INFINITE);
} else {
+ abs_deadline = gpr_convert_clock_type(abs_deadline, GPR_CLOCK_REALTIME);
gpr_timespec now = gpr_now(abs_deadline.clock_type);
int64_t now_ms = (int64_t)now.tv_sec * 1000 + now.tv_nsec / 1000000;
int64_t deadline_ms =