- 论坛徽章:
- 0
|
本帖最后由 wzw200 于 2015-02-03 09:36 编辑
- /*触发按每CPU变量 跟到最后就是 每CPU 一个 softirq_pending了 ,timer_tick这个地方是怎么按每CPU变量的?,没看明白*/
- timer_tick->update_process_times->run_local_timers->raise_softirq(TIMER_SOFTIRQ);
- #define __raise_softirq_irqoff(nr) do { or_softirq_pending(1UL << (nr)); } while (0)
- #define or_softirq_pending(x) (local_softirq_pending() |= (x))
- #define local_softirq_pending() __IRQ_STAT(smp_processor_id(), __softirq_pending)
- //--------------------------------------------------
- /*执行按每CPU变量*/
- static void run_timer_softirq(struct softirq_action *h)
- {
- struct tvec_base *base = __get_cpu_var(tvec_bases);
- perf_event_do_pending();
- hrtimer_run_pending();
- if (time_after_eq(jiffies, base->timer_jiffies))
- __run_timers(base);
- }
复制代码 触发按每CPU变量 ,执行按每CPU变量
那时钟中断,在多核上是怎么做的的,轮着中断每个CPU吗,
谢谢! |
|