summaryrefslogtreecommitdiffstats
path: root/usr.sbin/xntpd/parse/parsestreams.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/xntpd/parse/parsestreams.c')
-rw-r--r--usr.sbin/xntpd/parse/parsestreams.c61
1 files changed, 42 insertions, 19 deletions
diff --git a/usr.sbin/xntpd/parse/parsestreams.c b/usr.sbin/xntpd/parse/parsestreams.c
index 45d2963..19e5c10 100644
--- a/usr.sbin/xntpd/parse/parsestreams.c
+++ b/usr.sbin/xntpd/parse/parsestreams.c
@@ -1,7 +1,7 @@
/*
- * /src/NTP/REPOSITORY/v3/parse/parsestreams.c,v 3.19 1994/02/24 16:33:54 kardel Exp
+ * /src/NTP/REPOSITORY/v3/parse/parsestreams.c,v 3.22 1994/06/01 10:41:16 kardel Exp
*
- * parsestreams.c,v 3.19 1994/02/24 16:33:54 kardel Exp
+ * parsestreams.c,v 3.22 1994/06/01 10:41:16 kardel Exp
*
* STREAMS module for reference clocks
* (SunOS4.x)
@@ -16,7 +16,7 @@
*/
#ifndef lint
-static char rcsid[] = "parsestreams.c,v 3.19 1994/02/24 16:33:54 kardel Exp";
+static char rcsid[] = "parsestreams.c,v 3.22 1994/06/01 10:41:16 kardel Exp";
#endif
#include "sys/types.h"
@@ -195,7 +195,7 @@ int xxxinit(fc, vdp, vdi, vds)
}
else
{
- static char revision[] = "3.19";
+ static char revision[] = "3.22";
char *s, *S, *t;
strncpy(ifm->f_name, mname, FMNAMESZ);
@@ -493,6 +493,11 @@ static int parseopen(q, dev, flag, sflag)
#endif
q->q_ptr = (caddr_t)kmem_alloc(sizeof(parsestream_t));
+ if (q->q_ptr == (caddr_t)0)
+ {
+ parseprintf(DD_OPEN,("parse: OPEN - FAILED - no memory\n"));
+ return OPENFAIL;
+ }
WR(q)->q_ptr = q->q_ptr;
parse = (parsestream_t *) q->q_ptr;
@@ -1022,24 +1027,33 @@ static int init_zs_linemon(q, my_q)
*/
szs = (struct savedzsops *) kmem_alloc(sizeof(struct savedzsops));
- parsestream->parse_data = (void *)szs;
+ if (szs == (struct savedzsops *)0)
+ {
+ parseprintf(DD_INSTALL, ("init_zs_linemon: CD monitor NOT installed - no memory\n"));
- s = splhigh();
+ return 0;
+ }
+ else
+ {
+ parsestream->parse_data = (void *)szs;
- parsestream->parse_dqueue = q; /* remember driver */
+ s = splhigh();
- szs->zsops = *zs->zs_ops;
- szs->zsops.zsop_xsint = (int (*)())zs_xsisr; /* place our bastard */
- szs->oldzsops = zs->zs_ops;
- emergencyzs = zs->zs_ops;
-
- zsopinit(zs, &szs->zsops); /* hook it up */
-
- (void) splx(s);
+ parsestream->parse_dqueue = q; /* remember driver */
- parseprintf(DD_INSTALL, ("init_zs_linemon: CD monitor installed\n"));
+ szs->zsops = *zs->zs_ops;
+ szs->zsops.zsop_xsint = (int (*)())zs_xsisr; /* place our bastard */
+ szs->oldzsops = zs->zs_ops;
+ emergencyzs = zs->zs_ops;
+
+ zsopinit(zs, &szs->zsops); /* hook it up */
+
+ (void) splx(s);
- return 1;
+ parseprintf(DD_INSTALL, ("init_zs_linemon: CD monitor installed\n"));
+
+ return 1;
+ }
}
}
@@ -1133,7 +1147,7 @@ static void zs_xsisr(zs)
/*
* logical state
*/
- status = cd_invert ? (zsstatus & (ZSRR0_CD|ZSRR0_SYNC)) == 0 : (zsstatus & (ZSRR0_CD|ZSRR0_SYNC)) != 0;
+ status = cd_invert ? (zsstatus & ZSRR0_SYNC) == 0 : (zsstatus & ZSRR0_SYNC) != 0;
#ifdef PPS_SYNC
if (status)
@@ -1286,8 +1300,17 @@ static void zs_xsisr(zs)
* History:
*
* parsestreams.c,v
+ * Revision 3.22 1994/06/01 10:41:16 kardel
+ * CD seems to happen on ZSRR0_SYNC
+ *
+ * Revision 3.21 1994/06/01 08:18:57 kardel
+ * look at CD only
+ *
+ * Revision 3.20 1994/05/30 09:57:43 kardel
+ * kmem_alloc checking
+ *
* Revision 3.19 1994/02/24 16:33:54 kardel
- * CD events can also be posted on sync flag
+ * CD events can olso be posted on sync flag
*
* Revision 3.18 1994/02/24 14:12:58 kardel
* initial PPS_SYNC support version
OpenPOWER on IntegriCloud