rem: while ( timers[ id ].first_tl->time_out >= *time )
add: while ( timers[ id ].first_tl && timers[ id ].first_tl->time_out <= *time )
context: void * timer_routine(void * attr){   struct s_table      *hash_table = (struct s_table *)attr;   struct timer*         timers= hash_table->timers;   struct timeval       a_sec;   struct timer_link* tl;   int unsigned*         time =  &(hash_table->time);   int                           id;   while (1)   {      a_sec.tv_sec   = 1;      a_sec.tv_usec = 0;      select( 0 , 0 , 0 ,0 , &a_sec );      (*time)++;      printf("%d\n", *time);      for( id=0 ; id<NR_OF_TIMER_LISTS ; id++ )         while ( timers[ id ].first_tl->time_out >= *time )         {            tl = remove_from_timer_list_from_head( hash_table, id );            timers[id].timeout_handler( tl->payload );         }   } /* while (1) */}