NTP PPS patch

Ulrich Windl (ulrich.windl@rz.uni-regensburg.de)
Fri, 25 Oct 1996 09:45:18 +0200

Hello Linus,

I've put the latest version of my patch to support NTP's PPS clock
calibration on
and I'm asking you to integrate that patch into the current 2.1
kernel. My patch is based on the i386 architecture and Linux 2.0.22,
but the only architecture specific change was to make
do_gettimeoffset a public symbol. Other changes that might be needed
for 2.1 are the new check routines for parameters.

My excuse for not having a 2.1 patch at hand, but I'm tight on disk
space at home.

The patch has been tested by several people (thank you all!), and
nobody complained. In fact I also can't see a reason for it. With an
external pulse-per-second signal you can icrease the accuracy of the
kernel time significantly. For my Pentium 100 I got as close as +-5
microseconds, but there is still room for improvements. The patch is
not intended to be the final version, but it's at a good point to
release the current state.

The polarity of the PPS signal can be selected in
drivers/char/serial.c (#if 1), and the duration of the pulse should
be a few hundred CPU cycles (1ms should be fine in all cases). The
file on the FTP server also included two test programs. One
(rtctest3.c) can use the RTC driver and an UART to produce a PPS
signal (based on the CMOS clock) and activate reception of it on an
other (maybe even the same, untested) UART. The other program
monitors the kernel clock.

If using the test program keep in mind that the CMOS clock is not a
perfect reference source, and that the PPS signal is created by
_software_. Thus high load may add jitter and delays to the signal.
If you have a true reference source (like a GPS receiver) try
connecting that one.

Of course I'm trying to answer the questions about the new code.
Another thing is the new Documentation/kernel-time.txt. If you
(Linus) think it's useful, we can keep it; if not we can drop it as
well. If you keep it I glady accept suggestions what to

Have a nice time
Ulrich Windl