summaryrefslogtreecommitdiff
path: root/kernel/timer.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/timer.c')
-rw-r--r--kernel/timer.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/kernel/timer.c b/kernel/timer.c
index 2d30f7fd0ecb..58c80293060b 100644
--- a/kernel/timer.c
+++ b/kernel/timer.c
@@ -135,6 +135,26 @@ void add_timer(timer_t *timer)
}
/***
+ * 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
*