示例#1
0
void setTimer(const timer_t timerid, const long double millis, const long double imillis) {
	struct itimerspec timeout;

	timeout.it_value = getTimespec(millis);

	timeout.it_interval = getTimespec(imillis);

	errno = 0;

	if (timer_settime(timerid, 0, &timeout, NULL) != 0)
		ERREXIT("Cannot set timer: %s", strerror(errno));
		
}
示例#2
0
static void CmiIdleLock_sleep(CmiIdleLock *l,int msTimeout) {
  struct timespec wakeup;

  if (l->hasMessages) return;
  l->isSleeping=1;
  MACHSTATE(4,"Processor going to sleep {")
  pthread_mutex_lock(&l->mutex);
  getTimespec(msTimeout,&wakeup);
  while (!l->hasMessages)
    if (ETIMEDOUT==pthread_cond_timedwait(&l->cond,&l->mutex,&wakeup))
      break;
  pthread_mutex_unlock(&l->mutex);
  MACHSTATE(4,"} Processor awake again")
  l->isSleeping=0;
}