aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/smp.c
diff options
context:
space:
mode:
authorAndrea Bastoni <bastoni@cs.unc.edu>2009-12-17 21:44:47 -0500
committerAndrea Bastoni <bastoni@cs.unc.edu>2009-12-17 21:44:47 -0500
commitaa4cc937bbdb828cc031e811cbf6fae79a59ee4a (patch)
tree311778a073921ec66d9925afa259169f88654649 /arch/x86/kernel/smp.c
parentd029e051b75f25bae435b9b37fd5d86893523aa9 (diff)
Add send_pull_timers() support for x86_32 arch
Diffstat (limited to 'arch/x86/kernel/smp.c')
-rw-r--r--arch/x86/kernel/smp.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/arch/x86/kernel/smp.c b/arch/x86/kernel/smp.c
index 337ce0c44f92..e83f79de863c 100644
--- a/arch/x86/kernel/smp.c
+++ b/arch/x86/kernel/smp.c
@@ -150,6 +150,16 @@ void native_send_call_func_ipi(const struct cpumask *mask)
150 free_cpumask_var(allbutself); 150 free_cpumask_var(allbutself);
151} 151}
152 152
153/* trigger timers on remote cpu */
154void smp_send_pull_timers(int cpu)
155{
156 if (unlikely(cpu_is_offline(cpu))) {
157 WARN_ON(1);
158 return;
159 }
160 apic->send_IPI_mask(cpumask_of(cpu), PULL_TIMERS_VECTOR);
161}
162
153/* 163/*
154 * this function calls the 'stop' function on all other CPUs in the system. 164 * this function calls the 'stop' function on all other CPUs in the system.
155 */ 165 */
@@ -230,6 +240,14 @@ void smp_call_function_single_interrupt(struct pt_regs *regs)
230 irq_exit(); 240 irq_exit();
231} 241}
232 242
243extern void hrtimer_pull(void);
244
245void smp_pull_timers_interrupt(struct pt_regs *regs)
246{
247 ack_APIC_irq();
248 TRACE("pull timer interrupt\n");
249}
250
233struct smp_ops smp_ops = { 251struct smp_ops smp_ops = {
234 .smp_prepare_boot_cpu = native_smp_prepare_boot_cpu, 252 .smp_prepare_boot_cpu = native_smp_prepare_boot_cpu,
235 .smp_prepare_cpus = native_smp_prepare_cpus, 253 .smp_prepare_cpus = native_smp_prepare_cpus,