Beispiel #1
0
 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;
 }
Beispiel #2
0
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);
}