如何验证系统中的时钟源?

如何验证系统中的时钟源?

根据内核代码,计时会将时钟源初始化为jiffies。

/*
 * timekeeping_init - Initializes the clocksource and common timekeeping values
 */
void __init timekeeping_init(void)
{
...
clock = clocksource_default_clock();
...
}

struct clocksource * __init __weak clocksource_default_clock(void)
{
    return &clocksource_jiffies;
}

但它也表示,一旦检测到新的时钟源,计时就会取代它。

/**
 * timekeeping_notify - Install a new clock source
 * @clock:      pointer to the clock source
 *
 * This function is called from clocksource.c after a new, better clock
 * source has been registered. The caller holds the clocksource_mutex.
 */

现在我知道,当我输入命令“date”时,它最终会从时钟源获取系统时间。我想知道我使用的是哪个时钟源,是 jiffies 吗?

答案1

我找到了。

时钟源可以在以下路径中找到:

/sys/devices/system/clocksource/clocksource0

如图所示:

-r--r--r--. 1 root root 4096 Jul 30 16:24 available_clocksource
-rw-r--r--. 1 root root 4096 Jul 30 16:32 current_clocksource
drwxr-xr-x. 2 root root    0 Jul 30 16:24 power
lrwxrwxrwx. 1 root root    0 Jul 28 11:40 subsystem -> ../../../../bus/clocksource
-rw-r--r--. 1 root root 4096 Jul 28 11:40 uevent
--w-------. 1 root root 4096 Jul 30 16:24 unbind_clocksource

available_clocksource显示所有可用的时钟源。

current_clocksource显示当前系统正在使用的时钟源。

使用echo xxx > current_clocksource可以更改当前时钟源(jiffies是默认时钟源,不在 中available_clocksource,但无法设置。似乎系统不允许设置非高分辨率时钟源)。

相关内容