History

timers: Consolidate base->next_timer update

Another bunch of mindlessly copied code. All callers of internal_add_timer() except the recascading code updates base->next_timer. Move this into internal_add_timer() and let the cascading code call __internal_add_timer().

Thomas Gleixner committed 14 years ago

Commit facbb4a1 parent ec44bc71 file · +15 −11Browse files

Unified · Split

kernel/timer.c+15−11
@@ -330,7 +330,8 @@ void set_timer_slack(struct timer_list *timer, int slack_hz) · 329 unmodified lines
330330 }
331331 EXPORT_SYMBOL_GPL(set_timer_slack);
332332
333−static void internal_add_timer(struct tvec_base *base, struct timer_list *timer)
333+static void
334+__internal_add_timer(struct tvec_base *base, struct timer_list *timer)
334335 {
335336 unsigned long expires = timer->expires;
336337 unsigned long idx = expires - base->timer_jiffies;
@@ -372,6 +373,17 @@ static void internal_add_timer(struct tvec_base *base, struct timer_list *timer) · 35 unmodified lines
372373 list_add_tail(&timer->entry, vec);
373374 }
374375
376+static void internal_add_timer(struct tvec_base *base, struct timer_list *timer)
377+{
378+ __internal_add_timer(base, timer);
379+ /*
380+ * Update base->next_timer if this is the earliest one.
381+ */
382+ if (time_before(timer->expires, base->next_timer) &&
383+ !tbase_get_deferrable(timer->base))
384+ base->next_timer = timer->expires;
385+}
386+
375387 #ifdef CONFIG_TIMER_STATS
376388 void __timer_stats_timer_set_start_info(struct timer_list *timer, void *addr)
377389 {
@@ -757,9 +769,6 @@ __mod_timer(struct timer_list *timer, unsigned long expires, · 379 unmodified lines
757769 }
758770
759771 timer->expires = expires;
760− if (time_before(timer->expires, base->next_timer) &&
761− !tbase_get_deferrable(timer->base))
762− base->next_timer = timer->expires;
763772 internal_add_timer(base, timer);
764773
765774 out_unlock:
@@ -925,9 +934,6 @@ void add_timer_on(struct timer_list *timer, int cpu) · 159 unmodified lines
925934 spin_lock_irqsave(&base->lock, flags);
926935 timer_set_base(timer, base);
927936 debug_activate(timer, timer->expires);
928− if (time_before(timer->expires, base->next_timer) &&
929− !tbase_get_deferrable(timer->base))
930− base->next_timer = timer->expires;
931937 internal_add_timer(base, timer);
932938 /*
933939 * Check whether the other CPU is idle and needs to be
@@ -1079,7 +1085,8 @@ static int cascade(struct tvec_base *base, struct tvec *tv, int index) · 145 unmodified lines
10791085 */
10801086 list_for_each_entry_safe(timer, tmp, &tv_list, entry) {
10811087 BUG_ON(tbase_get_base(timer->base) != base);
1082− internal_add_timer(base, timer);
1088+ /* No accounting, while moving them */
1089+ __internal_add_timer(base, timer);
10831090 }
10841091
10851092 return index;
@@ -1706,9 +1713,6 @@ static void migrate_timer_list(struct tvec_base *new_base, struct list_head *hea · 620 unmodified lines
17061713 timer = list_first_entry(head, struct timer_list, entry);
17071714 detach_timer(timer, false);
17081715 timer_set_base(timer, new_base);
1709− if (time_before(timer->expires, new_base->next_timer) &&
1710− !tbase_get_deferrable(timer->base))
1711− new_base->next_timer = timer->expires;
17121716 internal_add_timer(new_base, timer);
17131717 }
17141718 }