check_timer(timer); 
int __mod_timer(struct timer_list *timer, unsigned long expires){	timer_base_t *base;	tvec_base_t *new_base;	unsigned long flags;	int ret = 0;	BUG_ON(!timer->function);	check_timer(timer);	base = lock_timer_base(timer, &flags);	if (timer_pending(timer)) {		detach_timer(timer, 0);		ret = 1;	}	new_base = &__get_cpu_var(tvec_bases);	if (base != &new_base->t_base) {		/*		 * We are trying to schedule the timer on the local CPU.		 * However we can't change timer's base while it is running,		 * otherwise del_timer_sync() can't detect that the timer's		 * handler yet has not finished. This also guarantees that		 * the timer is serialized wrt itself.		 */		if (unlikely(base->running_timer == timer)) {			/* The timer remains on a former base */			new_base = container_of(base, tvec_base_t, t_base);		} else {			/* See the comment in lock_timer_base() */			timer->base = NULL;			spin_unlock(&base->lock);			spin_lock(&new_base->t_base.lock);			timer->base = &new_base->t_base;		}	}	timer->expires = expires;	internal_add_timer(new_base, timer);	spin_unlock_irqrestore(&new_base->t_base.lock, flags);	return ret;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/dfc4f94d2ff95fc92127d3e512c1df7cab274fb8/timer.c/clean/kernel/timer.c