Я думаю, что вы хотите clock_gettime
с, CLOCK_TAI
чтобы работать должным образом. Я сделал также.
Критическое предложение в указанном ответе: «Обратите внимание, что смещение от CLOCK_REALTIME инициализируется при загрузке до нуля, и ни ntpd, ни chronyd по умолчанию не устанавливают его на правильное значение (в настоящее время 35)».
Это может все еще быть истиной, за исключением того, что смещение теперь составляет 37, но недавний ntpd может, по меньшей мере, быть сконфигурирован для установки смещения. Я сделал следующее на машине openSUSE:
vi /etc/ntp.conf # Add the line: leapfile /var/lib/ntp/etc/ntp.leapseconds update-leap service ntpd restart less /var/log/ntp # Check for errors
Тогда clock_gettime(CLOCK_TAI, &res)
казалось, что работает правильно.
Я думаю, что NTP устанавливает смещение с ntp_adjtime
помощью MOD_TAI
. Поиск по источнику хроники с помощью поиска не grep -P '(ADJ|MOD)_TAI'
находит совпадений, поэтому кажется, что хрони еще не имеет этой возможности.