Ubuntu 12.04 LTS 上的以下代码:
#include <stdio.h>
#include <sys/timex.h>
#include <sys/time.h>
int main(int argc, char **argv)
{
struct timeval tv;
gettimeofday(&tv, NULL);
struct ntptimeval ntptv;
ntp_gettime(&ntptv);
printf("gettimeofday: tv_sec = %ld, tv_usec = %ld\n",
tv.tv_sec, tv.tv_usec);
printf("ntp_gettime: tv_sec = %ld, tv_usec = %ld\n",
ntptv.time.tv_sec, ntptv.time.tv_usec);
}
返回:
gettimeofday: tv_sec = 1366209548, tv_usec = 137736
ntp_gettime: tv_sec = 1366209548, tv_usec = 137743081
这有点奇怪,因为该tv_usec
值(如果确实是微秒计数)不应大于 1000000。上面显示的结果让我认为这ntp_gettime()
实际上是返回纳秒精度。
http://manpages.ubuntu.com/manpages/precise/man2/ntp_gettime.2freebsd.html上的ntp_gettime()
手册页(准确地说)
并没有说太多。
较早的手册页版本(适用于 hardy)
http://manpages.ubuntu.com/manpages/hardy/man2/ntp_gettime.2.html声称它可能是纳秒或微秒,具体取决于该STA_NANO
位是否在status
由ntp_adjtime()
.
有谁确切知道吗?除此之外,在 12.04 源代码中定义的ntp_gettime()
、ntp_adjtime()
以及它们调用的所有各种内部函数在哪里?