if (tasklist_lock.write_lock || posix_timer_event(t, 0) != 0) { 
if (posix_timer_event(t, 0) != 0) { 
void mmtimer_tasklet(unsigned long data) {	mmtimer_t *x = (mmtimer_t *)data;	struct k_itimer *t = x->timer;	unsigned long flags;	if (t == NULL)		return;	/* Send signal and deal with periodic signals */	spin_lock_irqsave(&t->it_lock, flags);	spin_lock(&x->lock);	/* If timer was deleted between interrupt and here, leave */	if (t != x->timer)		goto out;	t->it_overrun = 0;	if (tasklist_lock.write_lock || posix_timer_event(t, 0) != 0) {		// printk(KERN_WARNING "mmtimer: cannot deliver signal.\n");		t->it_overrun++;	}	if(t->it.mmtimer.incr) {		/* Periodic timer */		if (reschedule_periodic_timer(x)) {			printk(KERN_WARNING "mmtimer: unable to reschedule\n");			x->timer = NULL;		}	} else {		/* Ensure we don't false trigger in mmtimer_interrupt */		t->it.mmtimer.expires = 0;	}	t->it_overrun_last = t->it_overrun;out:	spin_unlock(&x->lock);	spin_unlock_irqrestore(&t->it_lock, flags);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/8d38eadb7a97f265f7b3a9e8a30df358c3a546c8/mmtimer.c/buggy/drivers/char/mmtimer.c