Acho que você deseja que clock_gettime
com CLOCK_TAI
funcione corretamente. Eu também.
A sentença crítica na resposta referenciada é: "Por favor note que o offset de CLOCK_REALTIME é inicializado no boot para zero e nem o ntpd nem o chronyd o configuram por padrão para o valor correto (atualmente 35)."
Isso ainda pode ser verdade, exceto pelo deslocamento de 37, mas um ntpd recente pode pelo menos ser configurado para definir o deslocamento. Eu fiz o seguinte em uma máquina do 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
Então clock_gettime(CLOCK_TAI, &res)
pareceu funcionar corretamente.
Acho que o ntp define o deslocamento usando ntp_adjtime
com MOD_TAI
. A pesquisa na fonte de chrony com grep -P '(ADJ|MOD)_TAI'
não encontra correspondências, portanto, parece que o chrony ainda não possui esse recurso.