在我的 Ubuntu 15.04(Linux 内核 3.19.0-28-generic)上,我在请求CLOCK_TAI
和CLOCK_REALTIME
使用clock_gettime()
. 这显然是一个错误,因为考虑到这篇关于 RedHat 操作系统的 文章,CLOCK_TAI
和之间的差异CLOCK_REALTIME
应该是闰秒数加上纪元差异。
在我的 Ubuntu 15.04(Linux 内核 3.19.0-28-generic)上,我在请求CLOCK_TAI
和CLOCK_REALTIME
使用clock_gettime()
. 这显然是一个错误,因为考虑到这篇关于 RedHat 操作系统的 文章,CLOCK_TAI
和之间的差异CLOCK_REALTIME
应该是闰秒数加上纪元差异。
所以 timeval/timespec 的 usec/nsec 部分应该是相同的。
但由于性能问题(CLOCK_REALTIME 是应用程序最受打击的),在 Linux 中我们实际上将其结构化为:
所以
CLOCK_REALTIME and CLOCK_TAI return the same because the kernel parameter tai_offset is zero.
使用
adjtimex(timex tmx)
并读取值进行检查。ntpd
如果它足够新 (>4.2.6
) 并且有一个闰秒文件,我认为这将设置它。它也可能能够从上游服务器获取它,但我无法验证。adjtimex()
当以 root 身份运行时,可以tai_offset
手动设置调用。我在这里和这里的参考
在引用的文章中找到了答案。重点是我。