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;
}
예제 #2
0
파일: thr_cond.c 프로젝트: AhmadTux/freebsd
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;
}
예제 #4
0
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);
}