Re: [RFC] [PATCH] Performance of del_timer_sync

From: Ingo Molnar
Date: Tue May 11 2004 - 15:39:00 EST



* Chen, Kenneth W <kenneth.w.chen@xxxxxxxxx> wrote:

> > +int del_single_shot_timer(struct timer_struct *timer)
> > +{
> > + if (del_timer(timer))
> > + del_timer_sync(timer);
> > +}
> > #endif
>
> I'm confused, isn't the polarity of del_timer() need to be reversed?
> Also propagate the return value of del_timer_sync()?

indeed. If the removal didnt succeed then we must make sure there's no
timer fn pending. Btw., in that case del_timer_sync() must not succeed -
it would mean the timer fn re-added the timer, which by definition must
not happen here. So i'd go for:

int del_single_shot_timer(struct timer_struct *timer)
{
int ret = del_timer(timer);

if (!ret) {
ret = del_timer_sync(timer);
BUG_ON(ret);
}

return ret;
}

this should catch illegal uses of del_single_shot_timer().

Ingo
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/