From: Zoltan Varga Date: Thu, 29 Jun 2017 06:20:50 +0000 (-0400) Subject: Revert "[runtime] Use pthread_cond_timedwait_relative_np () function on osx if availa... X-Git-Url: http://wien.tomnetworks.com/gitweb/?p=mono.git;a=commitdiff_plain;h=6c374838220d424d54f08e3350ce7c3e41a63c7e Revert "[runtime] Use pthread_cond_timedwait_relative_np () function on osx if available. (#5143)" This reverts commit 616ea50718aba3af237637f77d9c58acdca9a61f. Revert this as it fails to build on wrench. --- diff --git a/configure.ac b/configure.ac index b14ee03463c..a61341e306f 100644 --- a/configure.ac +++ b/configure.ac @@ -1956,7 +1956,7 @@ if test x$host_win32 = xno; then AC_CHECK_HEADERS(pthread.h) AC_CHECK_HEADERS(pthread_np.h) AC_CHECK_FUNCS(pthread_mutex_timedlock) - AC_CHECK_FUNCS(pthread_getattr_np pthread_attr_get_np pthread_setname_np pthread_cond_timedwait_relative_np) + AC_CHECK_FUNCS(pthread_getattr_np pthread_attr_get_np pthread_setname_np) AC_CHECK_FUNCS(pthread_kill) AC_MSG_CHECKING(for PTHREAD_MUTEX_RECURSIVE) AC_TRY_COMPILE([ #include ], [ diff --git a/mono/utils/mono-os-mutex.h b/mono/utils/mono-os-mutex.h index 7bd79b03dbb..3888d26441d 100644 --- a/mono/utils/mono-os-mutex.h +++ b/mono/utils/mono-os-mutex.h @@ -178,6 +178,9 @@ mono_os_cond_wait (mono_cond_t *cond, mono_mutex_t *mutex) static inline int mono_os_cond_timedwait (mono_cond_t *cond, mono_mutex_t *mutex, guint32 timeout_ms) { +#ifdef BROKEN_CLOCK_SOURCE + struct timeval tv; +#endif struct timespec ts; int res; @@ -188,22 +191,7 @@ mono_os_cond_timedwait (mono_cond_t *cond, mono_mutex_t *mutex, guint32 timeout_ /* ms = 10^-3, us = 10^-6, ns = 10^-9 */ - /* This function only seems to be available on 64bit osx */ -#if defined(HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE_NP) && defined(TARGET_OSX) && defined(TARGET_AMD64) - memset (&ts, 0, sizeof (struct timespec)); - ts.tv_sec = timeout_ms / 1000; - ts.tv_nsec = (timeout_ms % 1000) * 1000 * 1000; - - res = pthread_cond_timedwait_relative_np (cond, mutex, &ts); - if (G_UNLIKELY (res != 0 && res != ETIMEDOUT)) { - g_print ("cond: %p mutex: %p\n", *(gpointer*)cond, *(gpointer*)mutex); - g_error ("%s: pthread_cond_timedwait_relative_np failed with \"%s\" (%d) %ld %ld %d", __func__, g_strerror (res), res, ts.tv_sec, ts.tv_nsec, timeout_ms); - } - return res != 0 ? -1 : 0; -#else #ifdef BROKEN_CLOCK_SOURCE - struct timeval tv; - /* clock_gettime is not supported in MAC OS x */ res = gettimeofday (&tv, NULL); if (G_UNLIKELY (res != 0)) @@ -226,12 +214,10 @@ mono_os_cond_timedwait (mono_cond_t *cond, mono_mutex_t *mutex, guint32 timeout_ } res = pthread_cond_timedwait (cond, mutex, &ts); - if (G_UNLIKELY (res != 0 && res != ETIMEDOUT)) { - g_print ("cond: %p mutex: %p\n", *(gpointer*)cond, *(gpointer*)mutex); + if (G_UNLIKELY (res != 0 && res != ETIMEDOUT)) g_error ("%s: pthread_cond_timedwait failed with \"%s\" (%d) %ld %ld %d", __func__, g_strerror (res), res, ts.tv_sec, ts.tv_nsec, timeout_ms); - } + return res != 0 ? -1 : 0; -#endif /* !HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE_NP */ } static inline void