summaryrefslogtreecommitdiffstats
path: root/contrib/ntp/libparse/parsesolaris.c
diff options
context:
space:
mode:
authordelphij <delphij@FreeBSD.org>2015-07-15 19:21:26 +0000
committerdelphij <delphij@FreeBSD.org>2015-07-15 19:21:26 +0000
commit2a25cee78ab1d37e7d2bc40ae675646974d99f56 (patch)
treeb0302ac4be59e104f4e1e54014561a1389397192 /contrib/ntp/libparse/parsesolaris.c
parenta0741a75537b2e0514472ac3b28afc55a7846c30 (diff)
downloadFreeBSD-src-2a25cee78ab1d37e7d2bc40ae675646974d99f56.zip
FreeBSD-src-2a25cee78ab1d37e7d2bc40ae675646974d99f56.tar.gz
MFC r280849,280915-280916,281015-281016,282097,282408,282415,283542,
284864,285169-285170,285435: ntp 4.2.8p3. Relnotes: yes Approved by: re (?)
Diffstat (limited to 'contrib/ntp/libparse/parsesolaris.c')
-rw-r--r--contrib/ntp/libparse/parsesolaris.c172
1 files changed, 87 insertions, 85 deletions
diff --git a/contrib/ntp/libparse/parsesolaris.c b/contrib/ntp/libparse/parsesolaris.c
index c023ad8..8c91257 100644
--- a/contrib/ntp/libparse/parsesolaris.c
+++ b/contrib/ntp/libparse/parsesolaris.c
@@ -1,12 +1,12 @@
/*
* /src/NTP/ntp4-dev/libparse/parsesolaris.c,v 4.11 2005/04/16 17:32:10 kardel RELEASE_20050508_A
- *
+ *
* parsesolaris.c,v 4.11 2005/04/16 17:32:10 kardel RELEASE_20050508_A
*
* STREAMS module for reference clocks
*
* Copyright (c) 1995-2005 by Frank Kardel <kardel <AT> ntp.org>
- * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universität Erlangen-Nürnberg, Germany
+ * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universitaet Erlangen-Nuernberg, Germany
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -40,6 +40,7 @@
static char rcsid[] = "parsesolaris.c,v 4.11 2005/04/16 17:32:10 kardel RELEASE_20050508_A";
#endif
+#include <config.h>
#include <sys/types.h>
#include <sys/conf.h>
#include <sys/errno.h>
@@ -73,7 +74,7 @@ static struct fmodsw fmod_templ =
extern struct mod_ops mod_strmodops;
-static struct modlstrmod modlstrmod =
+static struct modlstrmod modlstrmod =
{
&mod_strmodops, /* a STREAMS module */
"PARSE - NTP reference", /* name this baby - keep room for revision number */
@@ -99,13 +100,13 @@ _init(
)
{
static char revision[] = "4.6";
- char *s, *S;
+ char *s, *S;
char *t;
-
+
#ifndef lint
t = rcsid;
#endif
-
+
/*
* copy RCS revision into Drv_name
*
@@ -124,25 +125,25 @@ _init(
}
if (*s == ' ') s++;
}
-
- t = modlstrmod.strmod_linkinfo;
+
+ t = modlstrmod.strmod_linkinfo;
while (*t && (*t != ' '))
{
t++;
}
if (*t == ' ') t++;
-
+
S = s;
while (*S && (((*S >= '0') && (*S <= '9')) || (*S == '.')))
{
S++;
}
-
+
if (*s && *t && (S > s))
{
if (strlen(t) >= (S - s))
{
- (void) strncpy(t, s, (unsigned)(S - s));
+ strlcpy(t, s, (unsigned)(S - s));
}
}
return (mod_install(&modlinkage));
@@ -173,11 +174,11 @@ _fini(
/*--------------- stream module definition ----------------------------*/
-static int parseopen P((queue_t *, dev_t *, int, int, cred_t *));
-static int parseclose P((queue_t *, int));
-static int parsewput P((queue_t *, mblk_t *));
-static int parserput P((queue_t *, mblk_t *));
-static int parsersvc P((queue_t *));
+static int parseopen (queue_t *, dev_t *, int, int, cred_t *);
+static int parseclose (queue_t *, int);
+static int parsewput (queue_t *, mblk_t *);
+static int parserput (queue_t *, mblk_t *);
+static int parsersvc (queue_t *);
static struct module_info driverinfo =
{
@@ -244,8 +245,8 @@ int parsedebug = 0;
}\
} while (0)
-static int init_linemon P((queue_t *));
-static void close_linemon P((queue_t *, queue_t *));
+static int init_linemon (queue_t *);
+static void close_linemon (queue_t *, queue_t *);
#define M_PARSE 0x0001
#define M_NOPARSE 0x0002
@@ -264,7 +265,7 @@ ntp_memset(
static void
pprintf(
int lev,
- const char *form,
+ char *form,
...
)
{
@@ -273,7 +274,7 @@ pprintf(
va_start(ap, form);
if (lev & parsedebug)
- vcmn_err(CE_CONT, (char *)form, ap);
+ vcmn_err(CE_CONT, form, ap);
va_end(ap);
}
@@ -291,7 +292,7 @@ setup_stream(
mp = allocb(sizeof(struct stroptions), BPRI_MED);
if (mp)
{
- struct stroptions *str = (struct stroptions *)mp->b_wptr;
+ struct stroptions *str = (void *)mp->b_wptr;
str->so_flags = SO_READOPT|SO_HIWAT|SO_LOWAT|SO_ISNTTY;
str->so_readopt = (mode == M_PARSE) ? RMSGD : RNORM;
@@ -307,7 +308,7 @@ setup_stream(
}
else
{
- pprintf(DD_OPEN, "parse: setup_stream - FAILED - no MEMORY for allocb\n");
+ pprintf(DD_OPEN, "parse: setup_stream - FAILED - no MEMORY for allocb\n");
return 0;
}
}
@@ -324,18 +325,18 @@ parseopen(
{
register parsestream_t *parse;
static int notice = 0;
-
- pprintf(DD_OPEN, "parse: OPEN - q=%x\n", q);
-
+
+ pprintf(DD_OPEN, "parse: OPEN - q=%x\n", q);
+
if (sflag != MODOPEN)
{ /* open only for modules */
- pprintf(DD_OPEN, "parse: OPEN - FAILED - not MODOPEN\n");
+ pprintf(DD_OPEN, "parse: OPEN - FAILED - not MODOPEN\n");
return EIO;
}
if (q->q_ptr != (caddr_t)NULL)
{
- pprintf(DD_OPEN, "parse: OPEN - FAILED - EXCLUSIVE ONLY\n");
+ pprintf(DD_OPEN, "parse: OPEN - FAILED - EXCLUSIVE ONLY\n");
return EBUSY;
}
@@ -345,10 +346,10 @@ parseopen(
return ENOMEM;
}
- pprintf(DD_OPEN, "parse: OPEN - parse area q=%x, q->q_ptr=%x\n", q, q->q_ptr);
+ pprintf(DD_OPEN, "parse: OPEN - parse area q=%x, q->q_ptr=%x\n", q, q->q_ptr);
WR(q)->q_ptr = q->q_ptr;
- pprintf(DD_OPEN, "parse: OPEN - WQ parse area q=%x, q->q_ptr=%x\n", WR(q), WR(q)->q_ptr);
-
+ pprintf(DD_OPEN, "parse: OPEN - WQ parse area q=%x, q->q_ptr=%x\n", WR(q), WR(q)->q_ptr);
+
parse = (parsestream_t *) q->q_ptr;
bzero((caddr_t)parse, sizeof(*parse));
parse->parse_queue = q;
@@ -359,7 +360,7 @@ parseopen(
qprocson(q);
- pprintf(DD_OPEN, "parse: OPEN - initializing io subsystem q=%x\n", q);
+ pprintf(DD_OPEN, "parse: OPEN - initializing io subsystem q=%x\n", q);
if (!parse_ioinit(&parse->parse_io))
{
@@ -373,12 +374,12 @@ parseopen(
return EIO;
}
- pprintf(DD_OPEN, "parse: OPEN - initializing stream q=%x\n", q);
+ pprintf(DD_OPEN, "parse: OPEN - initializing stream q=%x\n", q);
if (setup_stream(q, M_PARSE))
{
(void) init_linemon(q); /* hook up PPS ISR routines if possible */
- pprintf(DD_OPEN, "parse: OPEN - SUCCEEDED\n");
+ pprintf(DD_OPEN, "parse: OPEN - SUCCEEDED\n");
/*
* I know that you know the delete key, but you didn't write this
@@ -411,19 +412,19 @@ parseclose(
{
register parsestream_t *parse = (parsestream_t *)q->q_ptr;
register unsigned long s;
-
+
pprintf(DD_CLOSE, "parse: CLOSE\n");
-
+
qprocsoff(q);
s = splhigh();
-
+
if (parse->parse_dqueue)
close_linemon(parse->parse_dqueue, q);
parse->parse_dqueue = (queue_t *)0;
(void) splx(s);
-
+
parse_ioend(&parse->parse_io);
kmem_free((caddr_t)parse, sizeof(parsestream_t));
@@ -443,7 +444,7 @@ parsersvc(
)
{
mblk_t *mp;
-
+
while ((mp = getq(q)))
{
if (canputnext(q) || (mp->b_datap->db_type > QPCTL))
@@ -476,17 +477,17 @@ parsewput(
register mblk_t *datap;
register struct iocblk *iocp;
parsestream_t *parse = (parsestream_t *)q->q_ptr;
-
+
pprintf(DD_WPUT, "parse: parsewput\n");
-
+
switch (mp->b_datap->db_type)
{
default:
putnext(q, mp);
break;
-
+
case M_IOCTL:
- iocp = (struct iocblk *)mp->b_rptr;
+ iocp = (void *)mp->b_rptr;
switch (iocp->ioc_cmd)
{
default:
@@ -510,14 +511,15 @@ parsewput(
}
mp->b_cont = datap;
- *(struct ppsclockev *)datap->b_wptr = parse->parse_ppsclockev;
+ /* (void *) quiets cast alignment warning */
+ *(struct ppsclockev *)(void *)datap->b_wptr = parse->parse_ppsclockev;
datap->b_wptr +=
sizeof(struct ppsclockev) / sizeof(*datap->b_wptr);
mp->b_datap->db_type = M_IOCACK;
iocp->ioc_count = sizeof(struct ppsclockev);
qreply(q, mp);
break;
-
+
case PARSEIOC_ENABLE:
case PARSEIOC_DISABLE:
{
@@ -535,7 +537,7 @@ parsewput(
}
qreply(q, mp);
break;
- }
+ }
case PARSEIOC_TIMECODE:
case PARSEIOC_SETFMT:
@@ -543,7 +545,7 @@ parsewput(
case PARSEIOC_SETCS:
if (iocp->ioc_count == sizeof(parsectl_t))
{
- parsectl_t *dct = (parsectl_t *)mp->b_cont->b_rptr;
+ parsectl_t *dct = (void *)mp->b_cont->b_rptr;
switch (iocp->ioc_cmd)
{
@@ -551,7 +553,7 @@ parsewput(
pprintf(DD_WPUT, "parse: parsewput - PARSEIOC_TIMECODE\n");
ok = parse_timecode(dct, &parse->parse_io);
break;
-
+
case PARSEIOC_SETFMT:
pprintf(DD_WPUT, "parse: parsewput - PARSEIOC_SETFMT\n");
ok = parse_setfmt(dct, &parse->parse_io);
@@ -598,7 +600,7 @@ rdchar(
else
{
register mblk_t *mmp = *mp;
-
+
*mp = (*mp)->b_cont;
freeb(mmp);
}
@@ -617,7 +619,7 @@ parserput(
{
register unsigned char type;
mblk_t *mp = imp;
-
+
switch (type = mp->b_datap->db_type)
{
default:
@@ -634,22 +636,22 @@ parserput(
else
putq(q, mp);
break;
-
+
case M_BREAK:
case M_DATA:
{
register parsestream_t * parse = (parsestream_t *)q->q_ptr;
register mblk_t *nmp;
register unsigned long ch;
- timestamp_t ctime;
+ timestamp_t c_time;
timespec_t hres_time;
/*
* get time on packet delivery
*/
gethrestime(&hres_time);
- ctime.tv.tv_sec = hres_time.tv_sec;
- ctime.tv.tv_usec = hres_time.tv_nsec / 1000;
+ c_time.tv.tv_sec = hres_time.tv_sec;
+ c_time.tv.tv_usec = hres_time.tv_nsec / 1000;
if (!(parse->parse_status & PARSE_ENABLE))
{
@@ -672,7 +674,7 @@ parserput(
while (mp != (mblk_t *)NULL)
{
ch = rdchar(&mp);
- if (ch != ~0 && parse_ioread(&parse->parse_io, (unsigned int)ch, &ctime))
+ if (ch != ~0 && parse_ioread(&parse->parse_io, (unsigned int)ch, &c_time))
{
/*
* up up and away (hopefully ...)
@@ -689,11 +691,11 @@ parserput(
if (nmp) freemsg(nmp);
parse_iodone(&parse->parse_io);
}
- }
+ }
}
else
{
- if (parse_ioread(&parse->parse_io, (unsigned int)0, &ctime))
+ if (parse_ioread(&parse->parse_io, (unsigned int)0, &c_time))
{
/*
* up up and away (hopefully ...)
@@ -723,19 +725,19 @@ parserput(
case M_UNHANGUP:
{
register parsestream_t * parse = (parsestream_t *)q->q_ptr;
- timestamp_t ctime;
+ timestamp_t c_time;
timespec_t hres_time;
register mblk_t *nmp;
register int status = cd_invert ^ (type == M_UNHANGUP);
gethrestime(&hres_time);
- ctime.tv.tv_sec = hres_time.tv_sec;
- ctime.tv.tv_usec = hres_time.tv_nsec / 1000;
-
+ c_time.tv.tv_sec = hres_time.tv_sec;
+ c_time.tv.tv_usec = hres_time.tv_nsec / 1000;
+
pprintf(DD_RPUT, "parse: parserput - M_%sHANGUP\n", (type == M_HANGUP) ? "" : "UN");
if ((parse->parse_status & PARSE_ENABLE) &&
- parse_iopps(&parse->parse_io, status ? SYNC_ONE : SYNC_ZERO, &ctime))
+ parse_iopps(&parse->parse_io, status ? SYNC_ONE : SYNC_ZERO, &c_time))
{
nmp = (mblk_t *)NULL;
if (canputnext(parse->parse_queue) && (nmp = allocb(sizeof(parsetime_t), BPRI_MED)))
@@ -756,10 +758,10 @@ parserput(
}
else
putq(q, mp);
-
+
if (status)
{
- parse->parse_ppsclockev.tv = ctime.tv;
+ parse->parse_ppsclockev.tv = c_time.tv;
++(parse->parse_ppsclockev.serial);
}
}
@@ -767,8 +769,8 @@ parserput(
return 0;
}
-static int init_zs_linemon P((queue_t *, queue_t *)); /* handle line monitor for "zs" driver */
-static void close_zs_linemon P((queue_t *, queue_t *));
+static int init_zs_linemon (queue_t *, queue_t *); /* handle line monitor for "zs" driver */
+static void close_zs_linemon (queue_t *, queue_t *);
/*-------------------- CD isr status monitor ---------------*/
@@ -778,7 +780,7 @@ init_linemon(
)
{
register queue_t *dq;
-
+
dq = WR(q);
/*
* we ARE doing very bad things down here (basically stealing ISR
@@ -849,7 +851,7 @@ close_linemon(
#include <sys/ser_async.h>
#include <sys/ser_zscc.h>
-static void zs_xsisr P((struct zscom *)); /* zs external status interupt handler */
+static void zs_xsisr (struct zscom *); /* zs external status interupt handler */
/*
* there should be some docs telling how to get to
@@ -911,17 +913,17 @@ init_zs_linemon(
parsestream->parse_dqueue = q; /* remember driver */
szs->zsops = *zs->zs_ops;
- szs->zsops.zsop_xsint = (void (*) P((struct zscom *)))zs_xsisr; /* place our bastard */
+ szs->zsops.zsop_xsint = (void (*) (struct zscom *))zs_xsisr; /* place our bastard */
szs->oldzsops = zs->zs_ops;
emergencyzs = zs->zs_ops;
-
+
zs->zs_ops = &szs->zsops; /* hook it up */
/*
- * XXX: this is usually done via zsopinit()
+ * XXX: this is usually done via zsopinit()
* - have yet to find a way to call that routine
*/
- zs->zs_xsint = (void (*) P((struct zscom *)))zs_xsisr;
-
+ zs->zs_xsint = (void (*) (struct zscom *))zs_xsisr;
+
mutex_exit(zs->zs_excl);
pprintf(DD_INSTALL, "init_zs_linemon: CD monitor installed\n");
@@ -932,7 +934,7 @@ init_zs_linemon(
}
/*
- * unregister our ISR routine - must call under splhigh() (or
+ * unregister our ISR routine - must call under splhigh() (or
* whatever block ZS status interrupts)
*/
static void
@@ -968,7 +970,7 @@ close_zs_linemon(
mutex_exit(zs->zs_excl);
kmem_free((caddr_t)szs, sizeof (struct savedzsops));
-
+
pprintf(DD_INSTALL, "close_zs_linemon: CD monitor deleted\n");
return;
}
@@ -986,7 +988,7 @@ zs_xsisr(
struct zscom *zs
)
{
- register struct asyncline *za = (struct asyncline *)zs->zs_priv;
+ register struct asyncline *za = (void *)zs->zs_priv;
register queue_t *q;
register unsigned char zsstatus;
register int loopcheck;
@@ -1003,7 +1005,7 @@ zs_xsisr(
{
timestamp_t cdevent;
register int status;
-
+
/*
* time stamp
*/
@@ -1022,7 +1024,7 @@ zs_xsisr(
* ok - now the hard part - find ourself
*/
loopcheck = MAXDEPTH;
-
+
while (q)
{
if (q->q_qinfo && q->q_qinfo->qi_minfo)
@@ -1050,7 +1052,7 @@ zs_xsisr(
*/
parse_iodone(&((parsestream_t *)q->q_ptr)->parse_io);
}
-
+
if (status)
{
((parsestream_t *)q->q_ptr)->parse_ppsclockev.tv = cdevent.tv;
@@ -1089,9 +1091,9 @@ zs_xsisr(
SCC_WRITE0(ZSWR0_RESET_STATUS); /* might kill other conditions here */
return;
}
- }
+ }
- pprintf(DD_ISR, "zs_xsisr: non CD event 0x%x for \"%s\"\n",
+ pprintf(DD_ISR, "zs_xsisr: non CD event 0x%x for \"%s\"\n",
(za->za_rr0 ^ zsstatus) & ~ZSRR0_CD,dname);
/*
* we are now gathered here to process some unusual external status
@@ -1106,7 +1108,7 @@ zs_xsisr(
q = za->za_ttycommon.t_readq;
loopcheck = MAXDEPTH;
-
+
/*
* the real thing for everything else ...
*/
@@ -1117,8 +1119,8 @@ zs_xsisr(
dname = q->q_qinfo->qi_minfo->mi_idname;
if (!strcmp(dname, parseinfo.st_rdinit->qi_minfo->mi_idname))
{
- register void (*zsisr) P((struct zscom *));
-
+ register void (*zsisr) (struct zscom *);
+
/*
* back home - phew (hopping along stream queues might
* prove dangerous to your health)
@@ -1127,7 +1129,7 @@ zs_xsisr(
zsisr(zs);
else
panic("zs_xsisr: unable to locate original ISR");
-
+
pprintf(DD_ISR, "zs_xsisr: non CD event was processed for \"%s\"\n", dname);
/*
* now back to our program ...
@@ -1149,7 +1151,7 @@ zs_xsisr(
* corrupted TTY structures
*/
printf("zs_zsisr: looking for \"%s\" - found \"%s\" - taking EMERGENCY path\n", parseinfo.st_rdinit->qi_minfo->mi_idname, dname ? dname : "-NIL-");
-
+
if (emergencyzs && emergencyzs->zsop_xsint)
emergencyzs->zsop_xsint(zs);
else
OpenPOWER on IntegriCloud