diff options
author | Dimitri Sivanich <sivanich@sgi.com> | 2006-03-31 05:31:20 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-03-31 15:18:58 -0500 |
commit | 3055addadbe9bfb2365006a1c13fd342a8d30d52 (patch) | |
tree | 0efcbd4a4e1d129beeb2dee3649951bea0462052 | |
parent | 669d7868ae414cdb7b7e5df375dc8e4b47f26f6d (diff) |
[PATCH] hrtimer: call get_softirq_time() only when necessary in run_hrtimer_queue()
It seems that run_hrtimer_queue() is calling get_softirq_time() more
often than it needs to.
With this patch, it only calls get_softirq_time() if there's a
pending timer.
Signed-off-by: Dimitri Sivanich <sivanich@sgi.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r-- | kernel/hrtimer.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c index 49cbf7cffebd..f181ff4dd32e 100644 --- a/kernel/hrtimer.c +++ b/kernel/hrtimer.c | |||
@@ -606,6 +606,9 @@ static inline void run_hrtimer_queue(struct hrtimer_base *base) | |||
606 | { | 606 | { |
607 | struct rb_node *node; | 607 | struct rb_node *node; |
608 | 608 | ||
609 | if (!base->first) | ||
610 | return; | ||
611 | |||
609 | if (base->get_softirq_time) | 612 | if (base->get_softirq_time) |
610 | base->softirq_time = base->get_softirq_time(); | 613 | base->softirq_time = base->get_softirq_time(); |
611 | 614 | ||