int rtos_cond_timedwait(rt_cond_t *cond, rt_mutex_t *mutex, NANO_TIME abs_time) { CHK_LXRT_CALL(); int ret = rt_cond_wait_until(cond->cond, mutex->sem, nano2count(abs_time) ); if (ret == 0) return 0; if ( ret == SEM_TIMOUT ) return ETIMEDOUT; return -1; }
int rt_cond_wait(RT_COND *cond, RT_MUTEX *mutex, RTIME timeout) { struct service svc; ticks_t now; if (timeout != TM_INFINITE && timeout != TM_NONBLOCK) { COPPERPLATE_PROTECT(svc); clockobj_get_time(&alchemy_clock, &now, NULL); COPPERPLATE_UNPROTECT(svc); timeout += now; } return rt_cond_wait_until(cond, mutex, timeout); }