В 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

Может кто-нибудь дать мне какое-нибудь предложение?

0 ответов

Другие вопросы по тегам