我想测量内核中的时间间隔。我知道纳秒并不是很精确,但我需要比毫秒更精确的精度。
有很多很多函数可以获取时间。 Jiffies、一天中的时间、不睡觉的时间、睡觉的时间……有 ktime_get、clock_gettime、sys_clock_gettime 等。
我研究了这些功能,感觉其中启动了一些巨大的机器。我不需要转换为一天中的时间,而且我还想避免在多个计时结构之间来回转换值。
首先,在不尊重表现的情况下,我认为我可以接受
struct compat_timespec cts;
compat_sys_clock_gettime(CLOCK_MONOTONIC, &cts);
它一直有效,直到我想在虚拟文件的文件打开功能中使用它。现在compat_sys_clock_gettime
返回错误代码。什么会导致读取时间错误?
所以我的问题是令人尴尬的基本问题。
我如何才能高效地获取自启动 PC 以来的纳秒数......
- 不减去睡眠时间或任何其他特殊条件,
- 没有失败的可能性?
我的简单想象是应该有一个函数可以从某处读取股票代码值并乘以/除以该值以获得 ns 。我也很高兴了解为什么它不那么容易。
答案1
截至最近我正在使用ktime_get
.
我不知道是否有更好的东西,或者这个功能是否很常见,所以使用它是一个好主意。但这个函数似乎返回了一个小的分辨率,并且至少不是非常慢。
此外,它没有返回值,这意味着它不应该失败,但应该可靠地返回时间。