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);
}

你可能感兴趣的:(linux内核,linux,并行实时)