diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/core/support/time_posix.c | 7 | ||||
-rw-r--r-- | src/core/support/time_win32.c | 4 |
2 files changed, 10 insertions, 1 deletions
diff --git a/src/core/support/time_posix.c b/src/core/support/time_posix.c index dcecff0d05..889b63a88a 100644 --- a/src/core/support/time_posix.c +++ b/src/core/support/time_posix.c @@ -41,6 +41,7 @@ #include <unistd.h> #include <grpc/support/log.h> #include <grpc/support/time.h> +#include "src/core/iomgr/block_annotate.h" static struct timespec timespec_from_gpr(gpr_timespec gts) { struct timespec rv; @@ -126,6 +127,7 @@ void gpr_sleep_until(gpr_timespec until) { gpr_timespec now; gpr_timespec delta; struct timespec delta_ts; + int ns_result; for (;;) { /* We could simplify by using clock_nanosleep instead, but it might be @@ -137,7 +139,10 @@ void gpr_sleep_until(gpr_timespec until) { delta = gpr_time_sub(until, now); delta_ts = timespec_from_gpr(delta); - if (nanosleep(&delta_ts, NULL) == 0) { + GRPC_IOMGR_START_BLOCKING_REGION; + ns_result = nanosleep(&delta_ts, NULL); + GRPC_IOMGR_END_BLOCKING_REGION; + if (ns_result == 0) { break; } } diff --git a/src/core/support/time_win32.c b/src/core/support/time_win32.c index f794855429..710c7969ba 100644 --- a/src/core/support/time_win32.c +++ b/src/core/support/time_win32.c @@ -41,6 +41,8 @@ #include <src/core/support/time_precise.h> #include <sys/timeb.h> +#include "src/core/iomgr/block_annotate.h" + static LARGE_INTEGER g_start_time; static double g_time_scale; @@ -92,7 +94,9 @@ void gpr_sleep_until(gpr_timespec until) { delta = gpr_time_sub(until, now); sleep_millis = (DWORD)delta.tv_sec * GPR_MS_PER_SEC + delta.tv_nsec / GPR_NS_PER_MS; + GRPC_IOMGR_START_BLOCKING_REGION; Sleep(sleep_millis); + GRPC_IOMGR_END_BLOCKING_REGION; } } |