[ntp:questions] Use of the shmTime-struct

unruh unruh at wormhole.physics.ubc.ca
Wed Jun 30 22:03:33 UTC 2010

On 2010-06-30, meder at whoi.edu <meder at whoi.edu> wrote:
> I am looking at the shared memory structure and code used by NTP and was
> wondering if I could get some guidance on these values.  The big question is
> how NTP uses the clockTime vs the receiveTime.
> Trying to also understand the unit (unitptr) concept and which shared memory
> location(s) I should use if I have just a single time source.
> I also do not see a big difference between mode 0 and 1 especially given the
> valid field, but maybe someone could shed light on those.  I gather precision
> is not used?
> struct shmTime {
> 	int    mode; /* 0 - if valid set
> 		      *       use values,
> 		      *       clear valid
> 		      * 1 - if valid set
> 		      *       if count before and after read of values is equal,
> 		      *         use values
> 		      *       clear valid
> 		      */
> 	int    count;
> 	time_t clockTimeStampSec;
> 	int    clockTimeStampUSec;

The time on the system clock at which the PPS was received

> 	time_t receiveTimeStampSec;
> 	int    receiveTimeStampUSec;
The absolute time at which the PPS was received. 
shmpps sets the receiveTimeStampSec to be the rounded value of the
Ie, the nearest second to the system clock . The receiveTimeStampUSec is
set to 0. This means that the system clock must be within 1/2 sec of the
true time. 
I believe gpsd can set the receiveTimeStampSec from the NMEA sentence. 

(Note that some gps clocks can give 5 timestamps a second, so then
clockTimeStampUSec would not be 0.)

> 	int    leap;

Is a leap second coming up

> 	int    precision;

What is the precision of the timestamp (number of significant figures in
base 2 essentially)

> 	int    nsamples;

How many samples is it averaged over I believe.

> 	int    valid;

Has a new reading come in since the last time the shm was read by ntpd.
If not, then do not use the timestamps.

> 	int    dummy[10];
> };

Use shmpps to look at how to dump data into the shm.
Or just alter gpsd to read the serial data your clock sends rather than
what a GPS NMEA receiver sends on the serial line.

> ----------------------------------------------------------------
> This message was sent using IMP, the Internet Messaging Program.

More information about the questions mailing list