diff options
Diffstat (limited to 'usr.sbin/xntpd/parse/parsestreams.c')
-rw-r--r-- | usr.sbin/xntpd/parse/parsestreams.c | 61 |
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 |