timer: Use hlist for the timer wheel hash buckets
This reduces the size of struct tvec_base by 50% and results in slightly smaller code as well. Before: struct tvec_base: size: 8256, cachelines: 129 text data bss dec hex filename 17698 13297 8256 39251 9953 ../build/kernel/time/timer.o After: struct tvec_base: 4160, cachelines: 65 text data bss dec hex filename 17491 9201 4160 30852 7884 ../build/kernel/time/timer.o Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Paul McKenney <paulmck@linux.vnet.ibm.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Eric Dumazet <edumazet@google.com> Cc: John Stultz <john.stultz@linaro.org> Cc: Joonwoo Park <joonwoop@codeaurora.org> Cc: Wenbo Wang <wenbo.wang@memblaze.com> Link: http://lkml.kernel.org/r/20150526224511.854731214@linutronix.de Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
parent
1bd04bf6f6
commit
1dabbcec2c
2 changed files with 30 additions and 40 deletions
|
@ -14,7 +14,7 @@ struct timer_list {
|
|||
* All fields that change during normal runtime grouped to the
|
||||
* same cacheline
|
||||
*/
|
||||
struct list_head entry;
|
||||
struct hlist_node entry;
|
||||
unsigned long expires;
|
||||
struct tvec_base *base;
|
||||
|
||||
|
@ -71,7 +71,7 @@ extern struct tvec_base boot_tvec_bases;
|
|||
#define TIMER_FLAG_MASK 0x3LU
|
||||
|
||||
#define __TIMER_INITIALIZER(_function, _expires, _data, _flags) { \
|
||||
.entry = { .prev = TIMER_ENTRY_STATIC }, \
|
||||
.entry = { .next = TIMER_ENTRY_STATIC }, \
|
||||
.function = (_function), \
|
||||
.expires = (_expires), \
|
||||
.data = (_data), \
|
||||
|
@ -168,7 +168,7 @@ static inline void init_timer_on_stack_key(struct timer_list *timer,
|
|||
*/
|
||||
static inline int timer_pending(const struct timer_list * timer)
|
||||
{
|
||||
return timer->entry.next != NULL;
|
||||
return timer->entry.pprev != NULL;
|
||||
}
|
||||
|
||||
extern void add_timer_on(struct timer_list *timer, int cpu);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue