NTP共享内存驱动程序结构

时间:2012-06-27 06:33:57

标签: shared-memory ntp

我想使用共享内存驱动程序从GPS推送时间 接收器进入NTP(注1) - 主机操作系统是Linux,使用NTP 4.2.6p5。 根据{{​​3}},我 需要在共享内存中填充以下结构:

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;                  /* See documentation for "mode" on the site */
  time_t clockTimeStampSec;      /* external clock */
  int    clockTimeStampUSec;     /* external clock */
  time_t receiveTimeStampSec;    /* internal clock, when external value was received */
  int    receiveTimeStampUSec;   /* internal clock, when external value was received */
  int    leap;                   /* ??? */
  int    precision;              /* Precision of the timestamp, in 2^precision seconds */
  int    nsamples;               /* Set by NTPD - do not populate */
  int    valid;                  /* Shared memory is valid */
  int    dummy[10];
};

缺少的主要字段是“时间戳”和“跳跃”的精确定义。我认为时间戳是Unix时间,以UTC为单位,但是如何调整闰秒,以及它如何与“跳跃”字段进行交互?使用诸如documentation之类的界面的典型示例并没有真正回答这个问题。

(注1:在这个项目中,我们正在处理我们自己的GPS解决方案和基于原始观测值的时间,因此没有使用NMEA或其他GPS协议.PPS通过GPIO线提供给我们,我们正在使用ATOM驱动程序通过linuxpps捕获这个)

0 个答案:

没有答案