В OpenWRT clock_gettime() с CLOCK_REALTIME и CLOCK_TAI всегда получают одинаковые результаты
CLOCK_TAI в основном разработан как CLOCK_REALTIME(UTC) + tai_offset.
Я использую код, чтобы проверить разницу между TAI и REALTIME.
Но я получил разный результат на Raspberry Pi и OpenWRT.
#include <stdio.h>
#include <time.h>
#ifndef CLOCK_TAI
#define CLOCK_TAI 11
#endif
int main()
{
struct timespec ts;
clock_gettime(CLOCK_REALTIME, &ts);
printf("CLOCK_REALTIME: %d, %ld\n", ts.tv_sec, ts.tv_nsec);
clock_gettime(CLOCK_TAI, &ts);
printf("CLOCK_TAI: %d, %ld\n", ts.tv_sec, ts.tv_nsec);
return 0;
}
Я также скачиваю скачанный файл с: https://www.ietf.org/timezones/data/leap-seconds.list и добавляю leapfile "/path/to your/leap-file"
на /etc/ntp.conf
В это время разница в секундах должна составлять 37 секунд (см. Leap-seconds.list)
Вот мой ожидаемый результат в Raspberry Pi:
CLOCK_REALTIME : 1497357750, 808013378
CLOCK_TAI : 1497357787, 809035924
(1497357787-1497357750 = 37)
Но когда я делаю то же самое в OpenWRT. REALTIME и TAI почти одинаковы.
CLOCK_REALTIME : 1497355658, 843078207
CLOCK_TAI : 1497355658, 843287721
# ntpq -crv
associd=0 status=0614 leap_none, sync_ntp, 1 event, freq_mode,
version="ntpd 4.2.8p10@1.3728-o Tue Jun 13 11:54:10 UTC 2017 (1)",
processor="mips", system="Linux/3.10.14", leap=00, stratum=2,
precision=-17, rootdelay=5.275, rootdisp=192.843, refid=59.125.122.217,
reftime=dcea5404.21137eb8 Tue, Jun 13 2017 12:07:32.129,
clock=dcea542d.f1399189 Tue, Jun 13 2017 12:08:13.942, peer=28311, tc=6,
mintc=3, offset=-2.809440, frequency=0.000, sys_jitter=1.576573,
clk_jitter=0.936, clk_wander=0.000, tai=37, leapsec=201701010000,
expire=201712280000
Информация openWRT:
- openwrt: барьер_разлом 14.07
- uClibc 0.9.33.2
- gcc 4.8.x с улучшениями Linaro
- ntpd - программа-демон NTP - вер. 4.2.8p10
- Ядро Linux: 3.10.14 mips
Может кто-нибудь дать мне какое-нибудь предложение?