|
@@ -345,6 +345,7 @@ int starpu_pthread_cond_timedwait(starpu_pthread_cond_t *cond, starpu_pthread_mu
|
|
{
|
|
{
|
|
struct timespec now, delta;
|
|
struct timespec now, delta;
|
|
double delay;
|
|
double delay;
|
|
|
|
+ int ret = 0;
|
|
_starpu_clock_gettime(&now);
|
|
_starpu_clock_gettime(&now);
|
|
delta.tv_sec = abstime->tv_sec - now.tv_sec;
|
|
delta.tv_sec = abstime->tv_sec - now.tv_sec;
|
|
delta.tv_nsec = abstime->tv_nsec - now.tv_nsec;
|
|
delta.tv_nsec = abstime->tv_nsec - now.tv_nsec;
|
|
@@ -353,12 +354,13 @@ int starpu_pthread_cond_timedwait(starpu_pthread_cond_t *cond, starpu_pthread_mu
|
|
_STARPU_TRACE_COND_WAIT_BEGIN();
|
|
_STARPU_TRACE_COND_WAIT_BEGIN();
|
|
|
|
|
|
_starpu_pthread_cond_auto_init(cond);
|
|
_starpu_pthread_cond_auto_init(cond);
|
|
- xbt_cond_timedwait(*cond, *mutex, delay);
|
|
+#if SIMGRID_VERSION_MAJOR > 3 || (SIMGRID_VERSION_MAJOR == 3 && SIMGRID_VERSION_MINOR >= 18)
|
|
- STARPU_ASSERT_MSG(0, "FIXME: we don't have a return value for ETIMEOUT");
|
|
+ ret = xbt_cond_timedwait(*cond, *mutex, delay) ? -ETIMEDOUT : 0;
|
|
|
|
+#endif
|
|
|
|
|
|
_STARPU_TRACE_COND_WAIT_END();
|
|
_STARPU_TRACE_COND_WAIT_END();
|
|
|
|
|
|
- return 0;
|
|
+ return ret;
|
|
}
|
|
}
|
|
|
|
|
|
int starpu_pthread_cond_destroy(starpu_pthread_cond_t *cond)
|
|
int starpu_pthread_cond_destroy(starpu_pthread_cond_t *cond)
|