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.htmlSTA_NANO
は、ビットがstatus
によって返される単語に設定されているかどうかに応じて、ナノ秒またはマイクロ秒のいずれかであると主張していntp_adjtime()
ます。
はっきりわかる人いますか?それ以外ではntp_gettime()
、ntp_adjtime()
、 、およびそれらが呼び出すさまざまな内部関数はすべて、12.04 ソースで定義されていますか?