Re: [RFT 2/4] Add mod_timer_noact
From: Patrick McHardy <hidden>
Date: 2009-02-18 10:29:50
Also in:
netfilter-devel
From: Patrick McHardy <hidden>
Date: 2009-02-18 10:29:50
Also in:
netfilter-devel
Stephen Hemminger wrote:
+/***
+ * mod_timer_noact - modify a timer's timeout
+ * @timer: the timer to be modified
+ *
+ * mod_timer_noact works like mod_timer except that it doesn't activate an
+ * inactive timer, instead it returns without updating timer->expires.
+ *
+ * The function returns whether it has modified a pending timer or not.
+ * (ie. mod_timer_noact() of an inactive timer returns 0, mod_timer_noact() of
+ * an active timer returns 1.)
+ */
+int mod_timer_noact(struct timer_list *timer, unsigned long expires)
+{
+ BUG_ON(!timer->function);
+
+ /*
+ * This is a common optimization triggered by the
+ * networking code - if the timer is re-modified
+ * to be the same thing then just return:
+ */
+ if (timer->expires == expires && timer_pending(timer))
+ return 1;This doesn't seem right, since it uses TIMER_NOACT below, there's no point in checking for timer_pending() I think.
+ + return __mod_timer(timer, expires, TIMER_NOACT); +} + +EXPORT_SYMBOL(mod_timer_noact); +