From 9ebfa0da614cd7c28a94b62602f5e0950cb1f662 Mon Sep 17 00:00:00 2001 From: "Janet B. Anderson" Date: Fri, 17 Apr 1992 13:01:56 +0000 Subject: [PATCH] jba,pact used for asyn proc mrk,added FASTLOCK,report --- src/dev/devMz8310.c | 50 +++++++++++++++++++++++++++++++-------------- 1 file changed, 35 insertions(+), 15 deletions(-) diff --git a/src/dev/devMz8310.c b/src/dev/devMz8310.c index b807b81ca..da08697cc 100644 --- a/src/dev/devMz8310.c +++ b/src/dev/devMz8310.c @@ -34,6 +34,8 @@ * .03 12-11-91 jba Moved set of alarm stat and sevr to macros * .04 01-14-92 mrk Added interrupt support * .05 03-13-92 jba ANSI C changes + * .05 04-10-92 jba pact now used to test for asyn processing, not return value + * .05 04-13-92 jba Removed filename fp from report * ... */ @@ -55,6 +57,7 @@ #include #include #include +#include #include #include #include @@ -126,6 +129,7 @@ static struct { static int ncards=0; static struct mz8310_info { short present; + FAST_LOCK lock; struct { short connected; short nrec_using; @@ -223,7 +227,7 @@ getCmd(preg,pcmd) unsigned char *pcmd; { *pcmd = *preg; - if(mz8310Debug) printf("mx8310:getCmd: pcmdreg=%x cmd=%x %d\n",preg,*pcmd,*pcmd); + if(mz8310Debug) printf("mz8310:getCmd: pcmdreg=%x cmd=%x %d\n",preg,*pcmd,*pcmd); } getData(preg,pdata) @@ -235,7 +239,7 @@ getData(preg,pdata) } static long init(after) - short after; + int after; { int card,chip,channel,intvec; volatile unsigned char *pcmd; @@ -248,9 +252,12 @@ static long init(after) logMsg("devMz8310: sysBusToLocalAdrs failed\n"); exit(1); } + memset((char *)&mz8310_info[0],0,MAXCARDS*sizeof(struct mz8310_info)); BASE = tm_addrs[MZ8310]; for(card=0; cardcmd) { case CTR_READ: putCmd(pcmd,(SAVE | (3<pact=TRUE; + break; } mode |= (pr->clks << 8); putCmd(pcmd,(DISARM | (3<pact=TRUE; + return(0); } holdCount = clockRate*pr->wide; if(holdCount<1e0) holdCount = 1e0; @@ -584,7 +595,8 @@ static long write_pd(pr) recGblSetSevr(pr,WRITE_ALARM,VALID_ALARM); recGblRecordError(S_db_badField,pr, "devMz8310 : computed illegal clock rate"); - return(1); + pr->pact=TRUE; + return(0); } load = loadCount + .5; hold = holdCount + .5; @@ -602,12 +614,14 @@ static long write_pd(pr) recGblSetSevr(pr,WRITE_ALARM,VALID_ALARM); recGblRecordError(S_db_badField,pr, "devMz8310 : illegal clks value"); - return(1); + pr->pact=TRUE; + return(0); } mode |= (pr->clks << 8); } /* setup counter */ + FASTLOCK(&mz8310_info[card].lock); putCmd(pcmd,(DISARM | (1<llow==0 ? CLRTOGOUT : SETTOGOUT) | (channel+1))); @@ -626,6 +640,7 @@ static long write_pd(pr) putCmd(pcmd,(LOAD | (1<udf = FALSE; return(0); } @@ -675,7 +690,8 @@ static long write_pt(pr) recGblSetSevr(pr,WRITE_ALARM,VALID_ALARM); recGblRecordError(S_db_badField,pr, "devMz8310 : computed illegal clock rate"); - return(1); + pr->pact=TRUE; + return(0); } holdCount = periodInClockUnits*pr->dcy/100.0; if(holdCount<1e0) holdCount = 1e0; @@ -694,7 +710,8 @@ static long write_pt(pr) recGblSetSevr(pr,WRITE_ALARM,VALID_ALARM); recGblRecordError(S_db_badField,pr, "devMz8310 : computed illegal clock rate"); - return(1); + pr->pact=TRUE; + return(0); } load = loadCount + .5; hold = holdCount + .5; @@ -718,12 +735,14 @@ static long write_pt(pr) recGblSetSevr(pr,WRITE_ALARM,VALID_ALARM); recGblRecordError(S_db_badField,pr, "devMz8310 : illegal clks value"); - return(1); + pr->pact=TRUE; + return(0); } mode |= (pr->clks << 8); } /* setup counter */ + FASTLOCK(&mz8310_info[card].lock); putCmd(pcmd,(DISARM | (1<llow==0 ? CLRTOGOUT : SETTOGOUT) | (channel+1))); @@ -740,6 +759,7 @@ static long write_pt(pr) } /* Load and arm counter*/ putCmd(pcmd,(LOADARM | (1<udf = FALSE; return(0); }