The openntpd code specifies an adjustment to the system time once it has
determined an initial deviation from true time. At some point later it
checks the remaining time adjustment in the kernel to see how it differs
from what was expected.
__adjtime (const struct timeval *delta, struct timeval *olddelta)
openntpd calls adjtime with delta as NULL and a non-NULL olddelta. Hurd
does not support this combination currently.
It is straightforward to alter glibc but the functionality is not
available in gnumach because it always requires and uses the specified
delta.
gnumach cannot be changed to specify a 0.0 delta because that can be
used to cancel a time adjustment.
I have been able to get openntpd working by 'hacking'
host_adjust_time64() to not make a change to the 'timedelta' when it
sees a magic number as the 'seconds' value. This was simply to
demonstrate that openntpd can work reasonably even without the 'adjfreq'
interface that the implementation uses.
Do we need an additional interface in mach_host.defs for this usage
of host_adjust_time64?
Cheers,
Mike.