[patch 12/23] hrtimers: clean up callback tracking



From: Thomas Gleixner <tglx@xxxxxxxxxxxxx>

reintroduce ktimers feature "optimized away" by the ktimers
review process: remove the curr_timer pointer from the cpu-base
and use the hrtimer state.

Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
Signed-off-by: Ingo Molnar <mingo@xxxxxxx>
--
include/linux/hrtimer.h | 1 -
kernel/hrtimer.c | 10 +---------
2 files changed, 1 insertion(+), 10 deletions(-)

Index: linux-2.6.18-mm2/include/linux/hrtimer.h
===================================================================
--- linux-2.6.18-mm2.orig/include/linux/hrtimer.h 2006-09-30 01:41:17.000000000 +0200
+++ linux-2.6.18-mm2/include/linux/hrtimer.h 2006-09-30 01:41:17.000000000 +0200
@@ -108,7 +108,6 @@ struct hrtimer_cpu_base {
spinlock_t lock;
struct lock_class_key lock_key;
struct hrtimer_clock_base clock_base[HRTIMER_MAX_CLOCK_BASES];
- struct hrtimer *curr_timer;
};

/*
Index: linux-2.6.18-mm2/kernel/hrtimer.c
===================================================================
--- linux-2.6.18-mm2.orig/kernel/hrtimer.c 2006-09-30 01:41:17.000000000 +0200
+++ linux-2.6.18-mm2/kernel/hrtimer.c 2006-09-30 01:41:17.000000000 +0200
@@ -149,8 +149,6 @@ static void hrtimer_get_softirq_time(str
*/
#ifdef CONFIG_SMP

-#define set_curr_timer(b, t) do { (b)->curr_timer = (t); } while (0)
-
/*
* We are using hashed locking: holding per_cpu(hrtimer_bases)[n].lock
* means that all timers which are tied to this base via timer->base are
@@ -204,7 +202,7 @@ switch_hrtimer_base(struct hrtimer *time
* completed. There is no conflict as we hold the lock until
* the timer is enqueued.
*/
- if (unlikely(base->cpu_base->curr_timer == timer))
+ if (unlikely(timer->state & HRTIMER_CALLBACK))
return base;

/* See the comment in lock_timer_base() */
@@ -218,8 +216,6 @@ switch_hrtimer_base(struct hrtimer *time

#else /* CONFIG_SMP */

-#define set_curr_timer(b, t) do { } while (0)
-
static inline struct hrtimer_clock_base *
lock_hrtimer_base(const struct hrtimer *timer, unsigned long *flags)
{
@@ -643,7 +639,6 @@ static inline void run_hrtimer_queue(str
break;

fn = timer->function;
- set_curr_timer(cpu_base, timer);
__remove_hrtimer(timer, base, HRTIMER_CALLBACK);
spin_unlock_irq(&cpu_base->lock);

@@ -657,7 +652,6 @@ static inline void run_hrtimer_queue(str
enqueue_hrtimer(timer, base);
}
}
- set_curr_timer(cpu_base, NULL);
spin_unlock_irq(&cpu_base->lock);
}

@@ -844,8 +838,6 @@ static void migrate_hrtimers(int cpu)
spin_lock(&old_base->lock);

for (i = 0; i < HRTIMER_MAX_CLOCK_BASES; i++) {
- BUG_ON(old_base->curr_timer);
-
migrate_hrtimer_list(&old_base->clock_base[i],
&new_base->clock_base[i]);
}

--

-
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/



Relevant Pages

  • [patch 12/21] hrtimers: clean up callback tracking
    ... reintroduce ktimers feature "optimized away" by the ktimers ... remove the curr_timer pointer from the cpu-base ... and use the hrtimer state. ... means that all timers which are tied to this base via timer->base are ...
    (Linux-Kernel)
  • [patch 12/22] hrtimers: clean up callback tracking
    ... Reintroduce ktimers feature "optimized away" by the ktimers review process: ... remove the curr_timer pointer from the cpu-base and use the hrtimer state. ... means that all timers which are tied to this base via timer->base are ...
    (Linux-Kernel)
  • [patch 27/46] hrtimers: clean up callback tracking
    ... Reintroduce ktimers feature "optimized away" by the ktimers review ... hrtimer state. ... No functional changes. ... means that all timers which are tied to this base via timer->base are ...
    (Linux-Kernel)
  • [patch 02/19] hrtimers: clean up callback tracking
    ... Reintroduce ktimers feature "optimized away" by the ktimers review process: ... remove the curr_timer pointer from the cpu-base and use the hrtimer state. ... #ifdef CONFIG_SMP ... means that all timers which are tied to this base via timer->base are ...
    (Linux-Kernel)
  • Re: [patch 02/19] hrtimers: clean up callback tracking
    ... Reintroduce ktimers feature "optimized away" by the ktimers review process: ... remove the curr_timer pointer from the cpu-base and use the hrtimer state. ...
    (Linux-Kernel)