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.


Reply via email to