From 22331dad4687ac6f91428884e2b9a02cb4d8a6df Mon Sep 17 00:00:00 2001 From: Andrew Morton Date: Tue, 29 Oct 2002 23:23:44 -0800 Subject: [PATCH] slab: add_timer_on: add a timer on a particular CPU add_timer_on is like add_timer, except it takes a target CPU on which to add the timer. The slab code needs per-cpu timers for shrinking the per-cpu caches. --- kernel/timer.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'kernel') diff --git a/kernel/timer.c b/kernel/timer.c index 2d30f7fd0ecb..58c80293060b 100644 --- a/kernel/timer.c +++ b/kernel/timer.c @@ -134,6 +134,26 @@ void add_timer(timer_t *timer) put_cpu(); } +/*** + * add_timer_on - start a timer on a particular CPU + * @timer: the timer to be added + * @cpu: the CPU to start it on + * + * This is not very scalable on SMP. + */ +void add_timer_on(struct timer_list *timer, int cpu) +{ + tvec_base_t *base = tvec_bases+ cpu; + unsigned long flags; + + BUG_ON(timer_pending(timer) || !timer->function); + + spin_lock_irqsave(&base->lock, flags); + internal_add_timer(base, timer); + timer->base = base; + spin_unlock_irqrestore(&base->lock, flags); +} + /*** * mod_timer - modify a timer's timeout * @timer: the timer to be modified -- cgit v1.2.3