64bit support on Windows

pull/1352/head
zeliard 10 years ago
parent 292adfee5d
commit 8ae189bbab
  1. 4
      include/grpc/support/time.h
  2. 5
      src/core/support/alloc.c
  3. 2
      src/core/support/slice_buffer.c
  4. 4
      src/core/support/time.c
  5. 2
      src/core/support/time_win32.c

@ -47,7 +47,11 @@ extern "C" {
typedef struct gpr_timespec {
time_t tv_sec;
#if defined(GPR_WIN32) && defined(GPR_ARCH_64)
__int64 tv_nsec;
#else
int tv_nsec;
#endif
} gpr_timespec;
/* Time constants. */

@ -55,7 +55,12 @@ void *gpr_realloc(void *p, size_t size) {
}
void *gpr_malloc_aligned(size_t size, size_t alignment_log) {
#if defined(GPR_WIN32) && defined(GPR_ARCH_64)
size_t alignment = 1ULL << alignment_log;
#else
size_t alignment = 1 << alignment_log;
#endif
size_t extra = alignment - 1 + sizeof(void *);
void *p = gpr_malloc(size + extra);
void **ret = (void **)(((gpr_uintptr)p + extra) & ~(alignment - 1));

@ -117,7 +117,7 @@ void gpr_slice_buffer_add(gpr_slice_buffer *sb, gpr_slice s) {
s.data.inlined.bytes, s.data.inlined.length);
back->data.inlined.length += s.data.inlined.length;
} else {
size_t cp1 = GPR_SLICE_INLINED_SIZE - back->data.inlined.length;
gpr_uint32 cp1 = GPR_SLICE_INLINED_SIZE - back->data.inlined.length;
memcpy(back->data.inlined.bytes + back->data.inlined.length,
s.data.inlined.bytes, cp1);
back->data.inlined.length = GPR_SLICE_INLINED_SIZE;

@ -237,7 +237,7 @@ int gpr_time_similar(gpr_timespec a, gpr_timespec b, gpr_timespec threshold) {
gpr_int32 gpr_time_to_millis(gpr_timespec t) {
if (t.tv_sec >= 2147483) {
if (t.tv_sec == 2147483 && t.tv_nsec < 648 * GPR_NS_PER_MS) {
return 2147483 * GPR_MS_PER_SEC + t.tv_nsec / GPR_NS_PER_MS;
return 2147483 * GPR_MS_PER_SEC + (gpr_int32)t.tv_nsec / GPR_NS_PER_MS;
}
return 2147483647;
} else if (t.tv_sec <= -2147483) {
@ -245,7 +245,7 @@ gpr_int32 gpr_time_to_millis(gpr_timespec t) {
care?) */
return -2147483647;
} else {
return t.tv_sec * GPR_MS_PER_SEC + t.tv_nsec / GPR_NS_PER_MS;
return (gpr_int32)t.tv_sec * GPR_MS_PER_SEC + (gpr_int32)t.tv_nsec / GPR_NS_PER_MS;
}
}

@ -64,7 +64,7 @@ void gpr_sleep_until(gpr_timespec until) {
}
delta = gpr_time_sub(until, now);
sleep_millis = delta.tv_sec * GPR_MS_PER_SEC + delta.tv_nsec / GPR_NS_PER_MS;
sleep_millis = (DWORD)delta.tv_sec * GPR_MS_PER_SEC + (DWORD)delta.tv_nsec / GPR_NS_PER_MS;
Sleep(sleep_millis);
}
}

Loading…
Cancel
Save