rem: for( id=0 ; id<NR_OF_TIMER_LISTS ; id++ ) { tl = check_and_split_time_list( hash_table, id , ticks ); while (tl) { tmp_tl = tl->next_tl; tl->next_tl = tl->prev_tl =0 ; DBG("DEBUG: timer routine: timer[%d] , tl=%p next=%p\n",id,tl,tmp_tl); timers[id].timeout_handler( tl->payload ); tl = tmp_tl; } }
add: for( id=0 ; id<NR_OF_TIMER_LISTS ; id++ ) {  tl = check_and_split_time_list( & (hash_table->timers[ id ]), ticks );  while (tl) {  tmp_tl = tl->next_tl; tl->next_tl = tl->prev_tl =0 ; tl->list = NULL; DBG("DEBUG: timer routine: timer[%d] , tl=%p next=%p\n",id,tl,tmp_tl); timers[id].timeout_handler( tl->payload ); tl = tmp_tl; } }
context: void timer_routine(unsigned int ticks , void * attr){   struct s_table       *hash_table = (struct s_table *)attr;   struct timer*          timers= hash_table->timers;   struct timer_link  *tl, *tmp_tl;   int                           id;   DBG("%d\n", ticks);   for( id=0 ; id<NR_OF_TIMER_LISTS ; id++ )   {      tl = check_and_split_time_list( hash_table, id , ticks );      while (tl)      {         tmp_tl = tl->next_tl;         tl->next_tl = tl->prev_tl =0 ;         DBG("DEBUG: timer routine: timer[%d] , tl=%p next=%p\n",id,tl,tmp_tl);         timers[id].timeout_handler( tl->payload );         tl = tmp_tl;      }   }}