Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1.  
  2.  
  3. static uint32_t update_timers(uint32_t realtime)
  4. {
  5.     ostimer_t  *timer;
  6.     uint32_t   exp_time = -1;
  7.  
  8.     timer = (ostimer_t*)timers.next;
  9.     while( &timer->link != &timers)
  10.     {
  11.         ostimer_t  *tmp;
  12.  
  13.         tmp   = timer;
  14.         timer = (ostimer_t*)timer->link.next;
  15.  
  16.         if( tmp->exp_time < realtime)
  17.         {
  18.             list_remove(&tmp->link);
  19.             send_message(tmp->ctrl, MSG_TIMER, tmp->tmr_arg, tmp);
  20.         }
  21.     };
  22.  
  23.     timer = (ostimer_t*)timers.next;
  24.     while( &timer->link != &timers)
  25.     {
  26.         if( exp_time > timer->exp_time)
  27.             exp_time = timer->exp_time;
  28.         timer = (ostimer_t*)timer->link.next;
  29.     }
  30.     return exp_time;
  31. };
  32.  
  33. int set_timer(ctrl_t *ctrl, ostimer_t *timer, uint32_t delay)
  34. {
  35.     if( ctrl && timer &&delay)
  36.     {
  37.         timer->ctrl = ctrl;
  38.         timer->exp_time = realtime + delay;
  39.  
  40.         if( exp_time > timer->exp_time)
  41.             exp_time = timer->exp_time;
  42.  
  43.         list_append(&timer->link, &timers);
  44.     };
  45.     return 0;
  46. }
  47.