rem: DBG("%d\n", ticks);
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++ )	{		/* to waste as little time in lock as possible, detach list		   with expired items and process them after leaving the		   lock		*/		tl = check_and_split_time_list( & (hash_table->timers[ id ]), ticks );		/* process items now */		while (tl)		{			/* reset the timer list linkage */			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;		}	}}