summaryrefslogtreecommitdiffstats
path: root/usr.sbin/xntpd/patches/patch.22
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/xntpd/patches/patch.22')
-rw-r--r--usr.sbin/xntpd/patches/patch.22296
1 files changed, 296 insertions, 0 deletions
diff --git a/usr.sbin/xntpd/patches/patch.22 b/usr.sbin/xntpd/patches/patch.22
new file mode 100644
index 0000000..8b4296c
--- /dev/null
+++ b/usr.sbin/xntpd/patches/patch.22
@@ -0,0 +1,296 @@
+
+Received: from louie.udel.edu by huey.udel.edu id aa02110; 24 Feb 94 18:54 EST
+Received: from faui45.informatik.uni-erlangen.de by louie.udel.edu id aa13897;
+ 24 Feb 94 18:53 EST
+Received: from faui43.informatik.uni-erlangen.de by uni-erlangen.de with SMTP;
+ id AA27796 (5.65c-6/7.3v-FAU); Fri, 25 Feb 1994 00:53:32 +0100
+Received: from faui45x.informatik.uni-erlangen.de by immd4.informatik.uni-erlangen.de with SMTP;
+ id AA16114 (5.65c-6/7.3m-FAU); Fri, 25 Feb 1994 00:53:31 +0100
+From: Frank Kardel <Frank.Kardel@informatik.uni-erlangen.de>
+Message-Id: <199402242353.AA16114@faui43.informatik.uni-erlangen.de>
+Subject: patches (parse pps/pll control)
+To: mills@udel.edu
+Date: Fri, 25 Feb 94 0:52:59 MET
+X-Mailer: ELM [version 2.3 PL11]
+
+Hi, here are some patches.
+
+pps pll control is nor supported by parse.
+pps output variable are readable via mode 6 messages.
+
+diff -c v3/parse/parsestreams.c:1.1.1.10 v3/parse/parsestreams.c:3.19
+*** v3/parse/parsestreams.c:1.1.1.10 Fri Feb 25 00:44:41 1994
+--- v3/parse/parsestreams.c Fri Feb 25 00:44:41 1994
+***************
+*** 1,7 ****
+ /*
+! * /src/NTP/REPOSITORY/v3/parse/parsestreams.c,v 3.17 1994/02/20 15:18:02 kardel Exp
+ *
+! * parsestreams.c,v 3.17 1994/02/20 15:18:02 kardel Exp
+ *
+ * STREAMS module for reference clocks
+ * (SunOS4.x)
+--- 1,7 ----
+ /*
+! * /src/NTP/REPOSITORY/v3/parse/parsestreams.c,v 3.19 1994/02/24 16:33:54 kardel Exp
+ *
+! * parsestreams.c,v 3.19 1994/02/24 16:33:54 kardel Exp
+ *
+ * STREAMS module for reference clocks
+ * (SunOS4.x)
+***************
+*** 16,22 ****
+ */
+
+ #ifndef lint
+! static char rcsid[] = "parsestreams.c,v 3.17 1994/02/20 15:18:02 kardel Exp";
+ #endif
+
+ #include "sys/types.h"
+--- 16,22 ----
+ */
+
+ #ifndef lint
+! static char rcsid[] = "parsestreams.c,v 3.19 1994/02/24 16:33:54 kardel Exp";
+ #endif
+
+ #include "sys/types.h"
+***************
+*** 195,201 ****
+ }
+ else
+ {
+! static char revision[] = "3.17";
+ char *s, *S, *t;
+
+ strncpy(ifm->f_name, mname, FMNAMESZ);
+--- 195,201 ----
+ }
+ else
+ {
+! static char revision[] = "3.19";
+ char *s, *S, *t;
+
+ strncpy(ifm->f_name, mname, FMNAMESZ);
+***************
+*** 1076,1081 ****
+--- 1076,1086 ----
+
+ #define MAXDEPTH 50 /* maximum allowed stream crawl */
+
++ #ifdef PPS_SYNC
++ extern hardpps();
++ extern struct timeval time;
++ #endif
++
+ /*
+ * take external status interrupt (only CD interests us)
+ */
+***************
+*** 1087,1101 ****
+ register queue_t *q;
+ register unsigned char zsstatus;
+ register int loopcheck;
+- register unsigned char cdstate;
+ register char *dname;
+
+ /*
+ * pick up current state
+ */
+ zsstatus = zsaddr->zscc_control;
+
+! if (za->za_rr0 ^ (cdstate = zsstatus & ZSRR0_CD))
+ {
+ timestamp_t cdevent;
+ register int status;
+--- 1092,1109 ----
+ register queue_t *q;
+ register unsigned char zsstatus;
+ register int loopcheck;
+ register char *dname;
++ #ifdef PPS_SYNC
++ register int s;
++ register long usec;
++ #endif
+
+ /*
+ * pick up current state
+ */
+ zsstatus = zsaddr->zscc_control;
+
+! if ((za->za_rr0 ^ zsstatus) & (ZSRR0_CD|ZSRR0_SYNC))
+ {
+ timestamp_t cdevent;
+ register int status;
+***************
+*** 1103,1129 ****
+ /*
+ * CONDITIONAL external measurement support
+ */
+! SET_LED(cdstate); /*
+ * inconsistent with upper SET_LED, but this
+ * is for oscilloscope business anyway and we
+ * are just interested in edge delays in the
+ * lower us range
+ */
+!
+ /*
+ * time stamp
+ */
+ uniqtime(&cdevent.tv);
+!
+! TIMEVAL_USADD(&cdevent.tv, xsdelay);
+!
+! q = za->za_ttycommon.t_readq;
+
+ /*
+ * logical state
+ */
+! status = cd_invert ? cdstate == 0 : cdstate != 0;
+
+ /*
+ * ok - now the hard part - find ourself
+ */
+--- 1111,1155 ----
+ /*
+ * CONDITIONAL external measurement support
+ */
+! SET_LED(zsstatus & (ZSRR0_CD|ZSRR0_SYNC)); /*
+ * inconsistent with upper SET_LED, but this
+ * is for oscilloscope business anyway and we
+ * are just interested in edge delays in the
+ * lower us range
+ */
+! #ifdef PPS_SYNC
+! s = splclock();
+! usec = time.tv_usec;
+! #endif
+ /*
+ * time stamp
+ */
+ uniqtime(&cdevent.tv);
+!
+! #ifdef PPS_SYNC
+! splx(s);
+! #endif
+
+ /*
+ * logical state
+ */
+! status = cd_invert ? (zsstatus & (ZSRR0_CD|ZSRR0_SYNC)) == 0 : (zsstatus & (ZSRR0_CD|ZSRR0_SYNC)) != 0;
+
++ #ifdef PPS_SYNC
++ if (status)
++ {
++ usec = cdevent.tv.tv_usec - usec;
++ if (usec < 0)
++ usec += 1000000;
++
++ hardpps(&cdevent.tv, usec);
++ }
++ #endif
++
++ TIMEVAL_USADD(&cdevent.tv, xsdelay);
++
++ q = za->za_ttycommon.t_readq;
++
+ /*
+ * ok - now the hard part - find ourself
+ */
+***************
+*** 1179,1188 ****
+ /*
+ * only pretend that CD has been handled
+ */
+! za->za_rr0 = za->za_rr0 & ~ZSRR0_CD | zsstatus & ZSRR0_CD;
+ ZSDELAY(2);
+
+! if (!((za->za_rr0 ^ zsstatus) & ~ZSRR0_CD))
+ {
+ /*
+ * all done - kill status indication and return
+--- 1205,1214 ----
+ /*
+ * only pretend that CD has been handled
+ */
+! za->za_rr0 = za->za_rr0 & ~(ZSRR0_CD|ZSRR0_SYNC) | zsstatus & (ZSRR0_CD|ZSRR0_SYNC);
+ ZSDELAY(2);
+
+! if (!((za->za_rr0 ^ zsstatus) & ~(ZSRR0_CD|ZSRR0_SYNC)))
+ {
+ /*
+ * all done - kill status indication and return
+***************
+*** 1260,1265 ****
+--- 1286,1297 ----
+ * History:
+ *
+ * parsestreams.c,v
++ * Revision 3.19 1994/02/24 16:33:54 kardel
++ * CD events can also be posted on sync flag
++ *
++ * Revision 3.18 1994/02/24 14:12:58 kardel
++ * initial PPS_SYNC support version
++ *
+ * Revision 3.17 1994/02/20 15:18:02 kardel
+ * rcs id cleanup
+ *
+diff -c v3/xntpd/ntp_loopfilter.c:1.1.1.33 v3/xntpd/ntp_loopfilter.c:3.40
+*** v3/xntpd/ntp_loopfilter.c:1.1.1.33 Fri Feb 25 00:46:20 1994
+--- v3/xntpd/ntp_loopfilter.c Fri Feb 25 00:46:21 1994
+***************
+*** 522,529 ****
+--- 522,545 ----
+ ntv.maxerror = sys_rootdispersion + sys_rootdelay / 2;
+ ntv.esterror = sys_rootdispersion;
+ ntv.time_constant = time_constant;
++ ntv.shift = 0;
+ (void)ntp_adjtime(&ntv);
+ drift_comp = ntv.frequency;
++ if (ntv.shift != 0) {
++ char buf[128];
++ (void) sprintf(buf, "pps_freq=%s", fptoa(ntv.ybar, 3));
++ set_sys_var(buf, strlen(buf)+1, RO|DEF);
++ (void) sprintf(buf, "pps_disp=%s", fptoa(ntv.disp, 3));
++ set_sys_var(buf, strlen(buf)+1, RO|DEF);
++ (void) sprintf(buf, "pps_interval=%ld",1 << ntv.shift);
++ set_sys_var(buf, strlen(buf)+1, RO);
++ (void) sprintf(buf, "pps_intervals=%ld", ntv.calcnt);
++ set_sys_var(buf, strlen(buf)+1, RO);
++ (void) sprintf(buf, "pps_jitterexceeded=%ld", ntv.jitcnt);
++ set_sys_var(buf, strlen(buf)+1, RO);
++ (void) sprintf(buf, "pps_dispersionexceeded=%ld", ntv.discnt);
++ set_sys_var(buf, strlen(buf)+1, RO);
++ }
+ #endif /* KERNEL_PLL */
+ } else {
+ if (offset < 0) {
+***************
+*** 725,730 ****
+--- 741,748 ----
+ "loop_config: skew compensation %s too large",
+ fptoa(tmp, 5));
+ } else {
++ char var[40];
++
+ drift_comp = tmp;
+
+ #if defined(KERNEL_PLL)
+***************
+*** 751,756 ****
+--- 769,778 ----
+ syslog(LOG_NOTICE,
+ "%susing kernel phase-lock loop",
+ (pll_control) ? "" : "Not ");
++ (void)sprintf(var, "kernel_pll=%s", pll_control ? "true" : "false");
++
++ set_sys_var(var, strlen(var)+1, RO);
++
+ #if DEBUG
+ if (debug)
+ printf("pll_control %d\n", pll_control);
+--
+ Frank Kardel (kardel@informatik.uni-erlangen.de)
+ All SCSI disks will from now on be required to send an email
+ notice 24 hours prior to complete hardware failure!
+
OpenPOWER on IntegriCloud