- 論壇徽章:
- 0
|
本帖最后由 wzw200 于 2015-02-03 09:36 編輯
- /*觸發(fā)按每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)
- //--------------------------------------------------
- /*執(zhí)行按每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);
- }
復制代碼 觸發(fā)按每CPU變量 ,執(zhí)行按每CPU變量
那時鐘中斷,在多核上是怎么做的的,輪著中斷每個CPU嗎,
謝謝! |
|