int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex) { rt_err_t result; result = _pthread_cond_timedwait(cond, mutex, RT_WAITING_FOREVER); if (result == RT_EOK) return 0; return EINVAL; }
int __pthread_cond_timedwait(pthread_cond_t *cond, pthread_mutex_t *mutex, const struct timespec *abstime) { struct pthread *curthread = _get_curthread(); int ret; _thr_cancel_enter(curthread); ret = _pthread_cond_timedwait(cond, mutex, abstime); _thr_cancel_leave(curthread, 1); return (ret); }
int pthread_cond_timedwait(pthread_cond_t *cond, pthread_mutex_t *mutex, const struct timespec *abstime) { int timeout; rt_err_t result; timeout = clock_time_to_tick(abstime); result = _pthread_cond_timedwait(cond, mutex, timeout); if (result == RT_EOK) return 0; if (result == -RT_ETIMEOUT) return ETIMEDOUT; return EINVAL; }
int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex) { D(bug("%s(%p)\n", __FUNCTION__, cond)); return _pthread_cond_timedwait(cond, mutex, NULL, FALSE); }