1. 程式人生 > >linux 後臺clocksource_watchdog 執行緒的啟動條件

linux 後臺clocksource_watchdog 執行緒的啟動條件

  1. 如果啟動引數沒有設定tsc=reliable,系統認為tsc時鐘源需要檢查後能被使用
    2.檢查的方法是啟動clocksource_watchdog

加入時鐘源的時候,如果tsc時鐘源不是reliable,則會在執行list_add(&cs->wd_list, &watchdog_list);,即將時鐘源加入watchdog_list連結串列。
而啟動watchdog的條件在函式clocksource_start_watchdog中
if (watchdog_running || !watchdog || list_empty(&watchdog_list))
即判斷watchdog_list是否為空。

因此如果tsc不是reliable,則會啟動clocksource_watchdog後臺,是reliable則不會啟動。

static void clocksource_enqueue_watchdog(struct clocksource *cs)
{
unsigned long flags;
spin_lock_irqsave(&watchdog_lock, flags);
if (cs->flags & CLOCK_SOURCE_MUST_VERIFY) {
/* cs is a clocksource to be watched. */
list_add(&cs->wd_list, &watchdog_list);
cs->flags &= ~CLOCK_SOURCE_WATCHDOG;
} else {
/* cs is a watchdog. */
if (cs->flags & CLOCK_SOURCE_IS_CONTINUOUS)
cs->flags |= CLOCK_SOURCE_VALID_FOR_HRES;
}
spin_unlock_irqrestore(&watchdog_lock, flags);
}