aboutsummaryrefslogtreecommitdiffstats
path: root/thread_pthread.c
diff options
context:
space:
mode:
Diffstat (limited to 'thread_pthread.c')
-rw-r--r--thread_pthread.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/thread_pthread.c b/thread_pthread.c
index 866caac9d0..8554414a1c 100644
--- a/thread_pthread.c
+++ b/thread_pthread.c
@@ -30,8 +30,11 @@ static void native_cond_destroy(rb_thread_cond_t *cond);
#define RB_CONDATTR_CLOCK_MONOTONIC 1
-#if defined(HAVE_PTHREAD_CONDATTR_SETCLOCK) && defined(CLOCK_MONOTONIC) && defined(HAVE_CLOCK_GETTIME)
+#if defined(HAVE_PTHREAD_CONDATTR_SETCLOCK) && defined(HAVE_CLOCKID_T) && \
+ defined(CLOCK_REALTIME) && defined(CLOCK_MONOTONIC) && defined(HAVE_CLOCK_GETTIME)
#define USE_MONOTONIC_COND 1
+#else
+#define USE_MONOTONIC_COND 0
#endif
#define GVL_SIMPLE_LOCK 0
@@ -230,10 +233,10 @@ native_cond_initialize(rb_thread_cond_t *cond, int flags)
int r;
pthread_condattr_t attr;
- cond->clockid = CLOCK_REALTIME;
pthread_condattr_init(&attr);
#if USE_MONOTONIC_COND
+ cond->clockid = CLOCK_REALTIME;
if (flags & RB_CONDATTR_CLOCK_MONOTONIC) {
r = pthread_condattr_setclock(&attr, CLOCK_MONOTONIC);
if (r == 0) {
@@ -323,10 +326,10 @@ native_cond_timeout(rb_thread_cond_t *cond, struct timespec timeout_rel)
rb_sys_fail("clock_gettime()");
goto out;
}
-#endif
if (cond->clockid != CLOCK_REALTIME)
rb_bug("unsupported clockid %d", cond->clockid);
+#endif
ret = gettimeofday(&tv, 0);
if (ret != 0)