diff --git a/src/db/callback.c b/src/db/callback.c index 3d86c8a02..2e807f442 100644 --- a/src/db/callback.c +++ b/src/db/callback.c @@ -31,18 +31,20 @@ * ----------------- * .01 12-12-91 mrk moved from dbScan.c to callback.c * .02 04-23-92 jba Fixed test on priority + * .03 06-28-93 mrk In callbackRequest replaced errMessage by logMsg */ #include #include -#include #include #include -#include +#include +#include #include #include #include +#include #include #define QUEUESIZE 1000 @@ -52,8 +54,8 @@ static int callbackTaskId[NUM_CALLBACK_PRIORITIES]; volatile int callbackRestart=FALSE; /* forward references */ -static void wdCallback(long); /*callback from taskwd*/ -static void start(); /*start or restart a callbackTask*/ +static void wdCallback(long ind); /*callback from taskwd*/ +static void start(int ind); /*start or restart a callbackTask*/ /*public routines */ long callbackInit() @@ -76,10 +78,8 @@ void callbackRequest(CALLBACK *pcallback) static int status; if(priority<0 || priority>=(NUM_CALLBACK_PRIORITIES)) { - char msg[80]; - sprintf(msg,"callbackRequest called with invalid priority=%d",priority); - errMessage(-1,msg); + logMsg("callbackRequest called with invalid priority\n",0,0,0,0,0,0); return; } lockKey = intLock(); @@ -89,7 +89,7 @@ void callbackRequest(CALLBACK *pcallback) if((status=semGive(callbackSem[priority]))!=OK) { /*semGive randomly returns garbage value*/ /* - errMessage(-1,"semGive returned error in callbackRequest\n"); + logMsg("semGive returned error in callbackRequest\n",0,0,0,0,0,0); */ } return; @@ -136,7 +136,8 @@ static void start(int ind) errMessage(0,"rngCreate failed while starting a callback task"); callbackTaskId[ind] = taskSpawn(CALLBACK_NAME,priority, CALLBACK_OPT,CALLBACK_STACK, - (FUNCPTR)callbackTask,ind,0,0,0,0,0,0,0,0,0); + (FUNCPTR)callbackTask,ind, + 0,0,0,0,0,0,0,0,0); if(callbackTaskId[ind]==ERROR) { errMessage(0,"Failed to spawn a callback task"); return; diff --git a/src/db/dbAccess.c b/src/db/dbAccess.c index 099596bfd..c644f18b3 100644 --- a/src/db/dbAccess.c +++ b/src/db/dbAccess.c @@ -77,7 +77,6 @@ #include #include #include -#include #include #include diff --git a/src/db/dbCaDblink.c b/src/db/dbCaDblink.c index 1ca16d04e..e345a3a2d 100644 --- a/src/db/dbCaDblink.c +++ b/src/db/dbCaDblink.c @@ -47,9 +47,8 @@ /* needed for NULL */ #include - -/* needed for typedef of caddr_t which is used in struct dbAddr */ -#include +#include +#include /* needed for PVNAME_SZ and FLDNAME_SZ ... must be before dbAccess.h */ #include @@ -335,7 +334,6 @@ long *poptions; long *pnrequest; { -char errmsg[100]; long rc; if (psource_dbaddr) @@ -417,7 +415,6 @@ unsigned short new_severity; unsigned short new_status; { -char errmsg[100]; long rc; if (pdest_dbaddr) @@ -468,7 +465,6 @@ void *pval; long nelements; { -char errmsg[100]; long rc; if (pdest_dbaddr) diff --git a/src/db/dbEvent.c b/src/db/dbEvent.c index bd7bd298a..cc931c605 100644 --- a/src/db/dbEvent.c +++ b/src/db/dbEvent.c @@ -62,7 +62,7 @@ #include #include #include -#include +#include #include #include @@ -119,7 +119,7 @@ typedef struct{ #define abort taskSuspend; struct event_block{ - NODE node; + DLLNODE node; struct db_addr *paddr; void (*user_sub)(); void *user_arg; @@ -403,7 +403,7 @@ register struct event_block *pevent; /* ptr to event blk (not required) */ pevent->valque = FALSE; LOCKREC(precord); - lstAdd((LIST*)&precord->mlis, (NODE*)pevent); + dllAdd((DLLLIST*)&precord->mlis, (DLLNODE*)pevent); UNLOCKREC(precord); return OK; @@ -434,9 +434,9 @@ register struct event_block *pevent; LOCKREC(precord); /* dont let a misplaced event corrupt the queue */ - status = lstFind((LIST*)&precord->mlis, (NODE*)pevent); + status = dllFind((DLLLIST*)&precord->mlis, (DLLNODE*)pevent); if(status!=ERROR) - lstDelete((LIST*)&precord->mlis, (NODE*)pevent); + dllDelete((DLLLIST*)&precord->mlis, (DLLNODE*)pevent); UNLOCKREC(precord); if(status == ERROR) return ERROR; diff --git a/src/db/dbScan.c b/src/db/dbScan.c index 3ee6674ee..ae5175cd6 100644 --- a/src/db/dbScan.c +++ b/src/db/dbScan.c @@ -45,7 +45,7 @@ #include #include #include -#include +#include #include #include @@ -67,13 +67,13 @@ extern volatile int interruptAccept; struct scan_list{ FAST_LOCK lock; - LIST list; + DLLLIST list; short modified;/*has list been modified?*/ long ticks; /*ticks per period for periodic*/ }; /*scan_elements are allocated and the address stored in dbCommon.spvt*/ struct scan_element{ - NODE node; + DLLNODE node; struct scan_list *pscan_list; struct dbCommon *precord; }; @@ -177,7 +177,7 @@ void scanAdd(struct dbCommon *precord) psl = dbCalloc(1,sizeof(struct scan_list)); papEvent[precord->evnt] = psl; FASTLOCKINIT(&psl->lock); - lstInit(&psl->list); + dllInit(&psl->list); } addToList(precord,psl); } else if(scan==SCAN_IO_EVENT) { @@ -338,7 +338,7 @@ void scanIoInit(IOSCANPVT *ppioscanpvt) prioritycallback.callback = ioeventCallback; piosl->callback.priority = priority; - lstInit(&piosl->scan_list.list); + dllInit(&piosl->scan_list.list); FASTLOCKINIT(&piosl->scan_list.lock); piosl->next=iosl_head[priority]; iosl_head[priority]=piosl; @@ -355,7 +355,7 @@ void scanIoRequest(IOSCANPVT pioscanpvt) if(!interruptAccept) return; for(priority=0, piosl=pioscanpvt; priorityscan_list.list)>0) callbackRequest((void *)piosl); + if(dllCount(&piosl->scan_list.list)>0) callbackRequest((void *)piosl); } } @@ -401,8 +401,8 @@ static void initPeriodic() /* look for first record */ for (i=0; inumber; i++) { if((precLoc=precHeader->papRecLoc[i])==NULL) continue; - for(precNode=(RECNODE *)lstFirst(precLoc->preclist); - precNode; precNode = (RECNODE *)lstNext(&precNode->node)) { + for(precNode=(RECNODE *)dllFirst(precLoc->preclist); + precNode; precNode = (RECNODE *)dllNext(&precNode->node)) { precord = precNode->precord; if(precord->name[0]!=0) goto got_record; } @@ -432,7 +432,7 @@ got_record: psl = dbCalloc(1,sizeof(struct scan_list)); papPeriodic[i] = psl; FASTLOCKINIT(&psl->lock); - lstInit(&psl->list); + dllInit(&psl->list); sscanf(scanChoices.strs[i+SCAN_1ST_PERIODIC],"%f",&temp); psl->ticks = temp * vxTicksPerSecond; } @@ -537,7 +537,7 @@ static void printList(struct scan_list *psl,char *message) struct scan_element *pse; FASTLOCK(&psl->lock); - (void *)pse = lstFirst(&psl->list); + (void *)pse = dllFirst(&psl->list); FASTUNLOCK(&psl->lock); if(pse==NULL) return; printf("%s\n",message); @@ -549,7 +549,7 @@ static void printList(struct scan_list *psl,char *message) printf("Returning because list changed while processing."); return; } - (void *)pse = lstNext((void *)pse); + (void *)pse = dllNext((void *)pse); FASTUNLOCK(&psl->lock); } } @@ -563,9 +563,9 @@ static void scanList(struct scan_list *psl) FASTLOCK(&psl->lock); psl->modified = FALSE; - (void *)pse = lstFirst(&psl->list); + (void *)pse = dllFirst(&psl->list); prev = NULL; - (void *)next = lstNext((void *)pse); + (void *)next = dllNext((void *)pse); FASTUNLOCK(&psl->lock); while(pse!=NULL) { struct dbCommon *precord = pse->precord; @@ -576,27 +576,27 @@ static void scanList(struct scan_list *psl) FASTLOCK(&psl->lock); if(!psl->modified) { prev = pse; - (void *)pse = lstNext((void *)pse); - if(pse!=NULL) (void *)next = lstNext((void *)pse); + (void *)pse = dllNext((void *)pse); + if(pse!=NULL) (void *)next = dllNext((void *)pse); } else if (pse->pscan_list==psl) { /*This scan element is still in same scan list*/ prev = pse; - (void *)pse = lstNext((void *)pse); - if(pse!=NULL) (void *)next = lstNext((void *)pse); + (void *)pse = dllNext((void *)pse); + if(pse!=NULL) (void *)next = dllNext((void *)pse); psl->modified = FALSE; } else if (prev!=NULL && prev->pscan_list==psl) { /*Previous scan element is still in same scan list*/ - (void *)pse = lstNext((void *)prev); + (void *)pse = dllNext((void *)prev); if(pse!=NULL) { - (void *)prev = lstPrevious((void *)pse); - (void *)next = lstNext((void *)pse); + (void *)prev = dllPrevious((void *)pse); + (void *)next = dllNext((void *)pse); } psl->modified = FALSE; } else if (next!=NULL && next->pscan_list==psl) { /*Next scan element is still in same scan list*/ pse = next; - (void *)prev = lstPrevious((void *)pse); - (void *)next = lstNext((void *)pse); + (void *)prev = dllPrevious((void *)pse); + (void *)next = dllNext((void *)pse); psl->modified = FALSE; } else { /*Too many changes. Just wait till next period*/ @@ -623,8 +623,8 @@ static void buildScanLists(void) /* look through all of the database records and place them on lists */ for (i=0; inumber; i++) { if((precLoc=precHeader->papRecLoc[i])==NULL) continue; - for(precNode=(RECNODE *)lstFirst(precLoc->preclist); - precNode; precNode = (RECNODE *)lstNext(&precNode->node)) { + for(precNode=(RECNODE *)dllFirst(precLoc->preclist); + precNode; precNode = (RECNODE *)dllNext(&precNode->node)) { precord = precNode->precord; if(precord->name[0]==0) continue; scanAdd(precord); @@ -644,16 +644,16 @@ static void addToList(struct dbCommon *precord,struct scan_list *psl) (void *)pse->precord = precord; } pse ->pscan_list = psl; - (void *)ptemp = lstFirst(&psl->list); + (void *)ptemp = dllFirst(&psl->list); while(ptemp!=NULL) { if(ptemp->precord->phas>precord->phas) { - lstInsert(&psl->list, - lstPrevious((void *)ptemp),(void *)pse); + dllInsert(&psl->list, + dllPrevious((void *)ptemp),(void *)pse); break; } - (void *)ptemp = lstNext((void *)ptemp); + (void *)ptemp = dllNext((void *)ptemp); } - if(ptemp==NULL) lstAdd(&psl->list,(void *)pse); + if(ptemp==NULL) dllAdd(&psl->list,(void *)pse); psl->modified = TRUE; FASTUNLOCK(&psl->lock); return; @@ -675,7 +675,7 @@ static void deleteFromList(struct dbCommon *precord,struct scan_list *psl) return; } pse->pscan_list = NULL; - lstDelete(&psl->list,(void *)pse); + dllDelete(&psl->list,(void *)pse); psl->modified = TRUE; FASTUNLOCK(&psl->lock); return; diff --git a/src/db/dbStaticLib.c b/src/db/dbStaticLib.c index 836dda16f..c80aeb120 100644 --- a/src/db/dbStaticLib.c +++ b/src/db/dbStaticLib.c @@ -42,7 +42,7 @@ #include #include -#include +#include #include #include #include @@ -389,13 +389,13 @@ void dbFreeBase(pdbbase) DBBASE *pdbbase; #endif /*__STDC__*/ { - LIST **ppvd = (LIST **) pdbbase->ppvd; + DLLLIST **ppvd = (DLLLIST **) pdbbase->ppvd; struct recType *precType = (struct recType *) pdbbase->precType; struct recLoc *precLoc; struct recHeader *precHeader = (struct recHeader *) pdbbase->precHeader; RECNODE *precnode; RECNODE *pnext; - LIST *preclist; + DLLLIST *preclist; int recType; if (!pdbbase || !ppvd || !precType) return; dbPvdFreeMem(pdbbase); @@ -407,11 +407,11 @@ DBBASE *pdbbase; free((void *) precLoc); continue; } - precnode = (RECNODE *) lstFirst(preclist); + precnode = (RECNODE *) dllFirst(preclist); while(precnode) { - pnext = (RECNODE *) lstNext((NODE *) precnode); + pnext = (RECNODE *) dllNext((DLLNODE *) precnode); free(precnode->precord); - lstDelete(preclist, (NODE*)precnode); + dllDelete(preclist, (DLLNODE*)precnode); dbPvdDelete(pdbbase,precnode); free((void *)precnode); precnode = pnext; @@ -687,7 +687,7 @@ char *precordName; DBBASE *pdbbase = pdbentry->pdbbase; int record_type = pdbentry->record_type; PVDENTRY *ppvd; - LIST *preclist = NULL; + DLLLIST *preclist = NULL; RECNODE *precnode = NULL; RECNODE *pNewRecNode = NULL; void *pNewRecord = NULL; @@ -707,8 +707,8 @@ char *precordName; precLoc = precHeader->papRecLoc[record_type]; if ((precLoc->preclist) == NULL) { /* allocate new list for this record type */ - precLoc->preclist = dbCalloc(1,sizeof(LIST)); - lstInit(precLoc->preclist); + precLoc->preclist = dbCalloc(1,sizeof(DLLLIST)); + dllInit(precLoc->preclist); } preclist = precLoc->preclist; rec_size = precTypDes->rec_size; @@ -721,13 +721,13 @@ char *precordName; init_record(pdbbase, pNewRecord, record_type); pNewRecNode->precord = pNewRecord; /* install record node in list in sorted postion */ - precnode = (RECNODE *)lstFirst(preclist); + precnode = (RECNODE *)dllFirst(preclist); while(precnode && strcmp(precordName,(char*)precnode->precord) > 0) - precnode = (RECNODE *)lstNext((NODE*)precnode); + precnode = (RECNODE *)dllNext((DLLNODE*)precnode); if(precnode) - lstInsert(preclist, lstPrevious((NODE*)precnode) ,(NODE *)pNewRecNode); + dllInsert(preclist, dllPrevious((DLLNODE*)precnode) ,(DLLNODE *)pNewRecNode); else - lstAdd(preclist, (NODE*)pNewRecNode); + dllAdd(preclist, (DLLNODE*)pNewRecNode); ppvd = dbPvdAdd(pdbbase,record_type,pNewRecNode); if(!ppvd) {errMessage(-1,"Logic Err: Could not add to PVD");return(-1);} pdbentry->precnode = pNewRecNode; @@ -745,13 +745,13 @@ DBENTRY *pdbentry; DBBASE *pdbbase = pdbentry->pdbbase; int record_type = pdbentry->record_type; RECNODE *precnode = pdbentry->precnode; - LIST *preclist; + DLLLIST *preclist; if (!precnode) return (-1); preclist = pdbbase->precHeader->papRecLoc[record_type]->preclist; free(precnode->precord); - lstDelete(preclist, (NODE*)precnode); + dllDelete(preclist, (DLLNODE*)precnode); dbPvdDelete(pdbbase,precnode); free((void *)precnode); pdbentry->precnode = NULL; @@ -807,7 +807,7 @@ DBENTRY *pdbentry; pdbentry->record_type = record_type; if(!(precLoc=GET_PRECLOC(precHeader,record_type))) return(S_dbLib_recNotFound); if(!precLoc->preclist) return(S_dbLib_recNotFound); - precnode = (RECNODE *)lstFirst(precLoc->preclist); + precnode = (RECNODE *)dllFirst(precLoc->preclist); if(!precnode) return(S_dbLib_recNotFound); pdbentry->precnode = precnode; return(0); @@ -824,7 +824,7 @@ DBENTRY *pdbentry; long status=0; if(!precnode) return(S_dbLib_recNotFound); - precnode = (RECNODE *)lstNext((NODE *)precnode); + precnode = (RECNODE *)dllNext((DLLNODE *)precnode); if(!precnode) status = S_dbLib_recNotFound; pdbentry->precnode = precnode; pdbentry->pfield = NULL; @@ -847,7 +847,7 @@ DBENTRY *pdbentry; if(!(precLoc=GET_PRECLOC(precHeader,record_type))) return(0); if(!precLoc->preclist) return(0); - return(lstCount(precLoc->preclist)); + return(dllCount(precLoc->preclist)); } #ifdef __STDC__ @@ -889,7 +889,7 @@ char *newName; struct recHeader *precHeader = (struct recHeader *) pdbbase->precHeader; char *precord; PVDENTRY *ppvd; - LIST *preclist; + DLLLIST *preclist; RECNODE *plistnode; if(!precnode) return(S_dbLib_recNotFound); @@ -900,14 +900,14 @@ char *newName; if(!ppvd) {errMessage(-1,"Logic Err: Could not add to PVD");return(-1);} /*remove from record list and reinstall in sorted order*/ preclist = precHeader->papRecLoc[record_type]->preclist; - lstDelete(preclist, (NODE*)precnode); - plistnode = (RECNODE *)lstFirst(preclist); + dllDelete(preclist, (DLLNODE*)precnode); + plistnode = (RECNODE *)dllFirst(preclist); while(plistnode && strcmp(newName,(char*)plistnode->precord) < 0) - plistnode = (RECNODE *)lstNext((NODE*)plistnode); + plistnode = (RECNODE *)dllNext((DLLNODE*)plistnode); if(plistnode) - lstInsert(preclist, lstPrevious((NODE*)plistnode) ,(NODE *)precnode); + dllInsert(preclist, dllPrevious((DLLNODE*)plistnode) ,(DLLNODE *)precnode); else - lstAdd(preclist, (NODE*)precnode); + dllAdd(preclist, (DLLNODE*)precnode); return(0); } @@ -3768,7 +3768,7 @@ FILE *fp; #endif /*__STDC__*/ { RECNODE *precnode; - LIST *preclist; + DLLLIST *preclist; int no_entries; unsigned rec_size; /* set to record size */ struct sdrHeader sdrHeader; @@ -3796,7 +3796,7 @@ FILE *fp; if ((precLoc = GET_PRECLOC(precHeader, recType)) == NULL) continue; if((preclist = precLoc->preclist) == NULL) continue; /* set up and write the SDR_DB_RECORDS sdrHeader */ - no_entries = lstCount(preclist); + no_entries = dllCount(preclist); rec_size = pRecTypDes->rec_size; memset((char *) &sdrHeader, '\0', sizeof(struct sdrHeader)); sdrHeader.magic = DBMAGIC; @@ -3812,9 +3812,9 @@ FILE *fp; errMessage(-1,"dbWrite: incomplete write"); return (-1); } - for (precnode = (RECNODE *) lstFirst(preclist); + for (precnode = (RECNODE *) dllFirst(preclist); precnode != NULL; - precnode = (RECNODE *) lstNext((NODE*)precnode)) { + precnode = (RECNODE *) dllNext((DLLNODE*)precnode)) { /* write each record of this type contiguous */ if ((fwrite(precnode->precord, (int) rec_size, 1, fp)) != 1) { errMessage(-1,"dbWrite: incomplete write"); @@ -3902,9 +3902,9 @@ void dbPvdInitPvt(pdbbase) DBBASE *pdbbase; #endif /*__STDC__*/ { - LIST **ppvd; + DLLLIST **ppvd; - ppvd = dbCalloc(HASH_NO, sizeof(LIST *)); + ppvd = dbCalloc(HASH_NO, sizeof(DLLLIST *)); pdbbase->ppvd = (void *) ppvd; return; } @@ -3919,17 +3919,17 @@ int lenName; #endif /*__STDC__*/ { unsigned short hashInd; - LIST **ppvd = (LIST **) pdbbase->ppvd; - LIST *pvdlist; + DLLLIST **ppvd = (DLLLIST **) pdbbase->ppvd; + DLLLIST *pvdlist; PVDENTRY *ppvdNode; hashInd = hash(name, lenName); if ((pvdlist=ppvd[hashInd]) == NULL) return (NULL); - ppvdNode = (PVDENTRY *) lstFirst(pvdlist); + ppvdNode = (PVDENTRY *) dllFirst(pvdlist); while(ppvdNode) { if(strcmp(name,(char *)ppvdNode->precnode->precord) == 0) return(ppvdNode); - ppvdNode = (PVDENTRY *) lstNext((NODE*)ppvdNode); + ppvdNode = (PVDENTRY *) dllNext((DLLNODE*)ppvdNode); } return (NULL); } @@ -3944,8 +3944,8 @@ RECNODE *precnode; #endif /*__STDC__*/ { unsigned short hashInd; - LIST **ppvd = (LIST **) pdbbase->ppvd; - LIST *ppvdlist; + DLLLIST **ppvd = (DLLLIST **) pdbbase->ppvd; + DLLLIST *ppvdlist; PVDENTRY *ppvdNode; int lenName; char *name=(char *)precnode->precord; @@ -3953,17 +3953,17 @@ RECNODE *precnode; lenName=strlen(name); hashInd = hash(name, lenName); if (ppvd[hashInd] == NULL) { - ppvd[hashInd] = dbCalloc(1, sizeof(LIST)); - lstInit(ppvd[hashInd]); + ppvd[hashInd] = dbCalloc(1, sizeof(DLLLIST)); + dllInit(ppvd[hashInd]); } ppvdlist=ppvd[hashInd]; - ppvdNode = (PVDENTRY *) lstFirst(ppvdlist); + ppvdNode = (PVDENTRY *) dllFirst(ppvdlist); while(ppvdNode) { if(strcmp(name,(char *)ppvdNode->precnode->precord) == 0) return(NULL); - ppvdNode = (PVDENTRY *) lstNext((NODE*)ppvdNode); + ppvdNode = (PVDENTRY *) dllNext((DLLNODE*)ppvdNode); } ppvdNode = dbCalloc(1, sizeof(PVDENTRY)); - lstAdd(ppvdlist, (NODE*)ppvdNode); + dllAdd(ppvdlist, (DLLNODE*)ppvdNode); ppvdNode->record_type = record_type; ppvdNode->precnode = precnode; return (ppvdNode); @@ -3979,8 +3979,8 @@ RECNODE *precnode; { char *name=(char *)precnode->precord; unsigned short hashInd; - LIST **ppvd = (LIST **) pdbbase->ppvd; - LIST *ppvdlist; + DLLLIST **ppvd = (DLLLIST **) pdbbase->ppvd; + DLLLIST *ppvdlist; PVDENTRY *ppvdNode; int lenName; @@ -3988,14 +3988,14 @@ RECNODE *precnode; hashInd = hash(name, lenName); if (ppvd[hashInd] == NULL)return; ppvdlist=ppvd[hashInd]; - ppvdNode = (PVDENTRY *) lstFirst(ppvdlist); + ppvdNode = (PVDENTRY *) dllFirst(ppvdlist); while(ppvdNode) { if(strcmp(name,(char *)ppvdNode->precnode->precord) == 0) { - lstDelete(ppvdlist, (NODE*)ppvdNode); + dllDelete(ppvdlist, (DLLNODE*)ppvdNode); free((void *)ppvdNode); return; } - ppvdNode = (PVDENTRY *) lstNext((NODE*)ppvdNode); + ppvdNode = (PVDENTRY *) dllNext((DLLNODE*)ppvdNode); } return; } @@ -4008,8 +4008,8 @@ DBBASE *pdbbase; #endif /*__STDC__*/ { unsigned short hashInd; - LIST **ppvd = (LIST **) pdbbase->ppvd; - LIST *ppvdlist; + DLLLIST **ppvd = (DLLLIST **) pdbbase->ppvd; + DLLLIST *ppvdlist; PVDENTRY *ppvdNode; PVDENTRY *next; @@ -4017,10 +4017,10 @@ DBBASE *pdbbase; for (hashInd=0; hashIndppvd; - LIST *ppvdlist; + DLLLIST **ppvd = (DLLLIST **) pdbbase->ppvd; + DLLLIST *ppvdlist; PVDENTRY *ppvdNode; int number; @@ -4047,13 +4047,13 @@ DBBASE *pdbbase; for (hashInd=0; hashIndprecnode->precord); if(number++ ==2) {number=0;printf("\n ");} - ppvdNode = (PVDENTRY *) lstNext((NODE*)ppvdNode); + ppvdNode = (PVDENTRY *) dllNext((DLLNODE*)ppvdNode); } } printf("\nEnd of Process Variable Directory\n"); diff --git a/src/db/dbTest.c b/src/db/dbTest.c index ca9974c97..c2700de89 100644 --- a/src/db/dbTest.c +++ b/src/db/dbTest.c @@ -81,7 +81,7 @@ #include #include -#include +#include #include #include #include @@ -188,8 +188,8 @@ long dbl(char *ptypeName) got_it: for(rectype=beg; rectype<=end; rectype++) { if(!(precLoc=GET_PRECLOC(precHeader,rectype))) continue; - for(precNode=(RECNODE *)lstFirst(precLoc->preclist); - precNode; precNode = (RECNODE *)lstNext(&precNode->node)) { + for(precNode=(RECNODE *)dllFirst(precLoc->preclist); + precNode; precNode = (RECNODE *)dllNext(&precNode->node)) { precord = precNode->precord; if(precord->name[0] == 0) continue; /*deleted record*/ strncpy(name,precord->name,PVNAME_SZ); @@ -629,8 +629,8 @@ long dblls(int lockset) printf(" lset lcnt disv disa pact\n"); for(rectype=beg; rectype<=end; rectype++) { if(!(precLoc=GET_PRECLOC(precHeader,rectype))) continue; - for(precNode=(RECNODE *)lstFirst(precLoc->preclist); - precNode; precNode = (RECNODE *)lstNext(&precNode->node)) { + for(precNode=(RECNODE *)dllFirst(precLoc->preclist); + precNode; precNode = (RECNODE *)dllNext(&precNode->node)) { precord = precNode->precord; if(precord->name[0] == 0) continue; /*deleted record*/ if(lockset>0 && lockset!=precord->lset) continue; diff --git a/src/db/db_test.c b/src/db/db_test.c index 936f1d4d5..0d16718c3 100644 --- a/src/db/db_test.c +++ b/src/db/db_test.c @@ -32,12 +32,13 @@ * .03 08-13-91 mrk Added extra null arg to db_get_field calls */ #include -#include +#include +#include #include /* function declarations */ -static print_returned(); +static void print_returned(); char tgf_buffer[600]; @@ -100,8 +101,6 @@ short index; struct db_addr addr; struct db_addr *paddr = &addr; char buffer[500]; - struct dbr_ctrl_enum test_enum; - short i; short shortvalue; long longvalue; float floatvalue; @@ -189,7 +188,7 @@ short index; * * print out the values in a database access interface structure */ -static print_returned(type,pbuffer,count) +static void print_returned(type,pbuffer,count) short type; char *pbuffer; short count; diff --git a/src/db/dbls.c b/src/db/dbls.c index 452f9d94c..9abe963b7 100644 --- a/src/db/dbls.c +++ b/src/db/dbls.c @@ -66,11 +66,11 @@ #include #endif -#include #include #include #include #include +#include #include #include @@ -87,18 +87,18 @@ extern struct dbBase *pdbBase; #endif /* forward references */ -static void DbRecType(); -static void DrvSup(); -static void DevSup(); -static void DbRecDes(); -static void CvtTable(); -static void ChoiceRec(); -static void ChoiceDev(); -static void ChoiceCvt(); -static void ChoiceGbl(); -static void DbErrDes(); -static void DbRecords(); -static void RecSup(); +void DbRecType(); +void DrvSup(); +void DevSup(); +void DbRecDes(); +void CvtTable(); +void ChoiceRec(); +void ChoiceDev(); +void ChoiceCvt(); +void ChoiceGbl(); +void DbErrDes(); +void DbRecords(); +void RecSup(); int getSelection(); static char buffer[512]; @@ -219,7 +219,7 @@ int dbls() printf("ENTER FULL_PATH_NAME OF OUTPUT LISTING FILE : "); scanf("%s", fname); if ((fp = fopen(fname, "a")) == NULL) { - printf("dbls: fopen error errno=%d\nfile=%s\n", MYERRNO, fname); + printf("dbls: fopen error errno=%d\nfile=%s\n", errno, fname); printf("TRY: < cd \"/full_dir_path/.\" > to correct this failure\n"); return (-1); } diff --git a/src/db/iocInit.c b/src/db/iocInit.c index 21501b216..31239b4d8 100644 --- a/src/db/iocInit.c +++ b/src/db/iocInit.c @@ -61,7 +61,7 @@ #include #include #include -#include +#include #include #include #include /* for sysSymTbl*/ @@ -394,8 +394,8 @@ static long initDatabase(void) } precTypDes = precDes->papRecTypDes[i]; pdevSup = GET_PDEVSUP(pdbBase->precDevSup,i); - for(precNode=(RECNODE *)lstFirst(precLoc->preclist); - precNode; precNode = (RECNODE *)lstNext(&precNode->node)) { + for(precNode=(RECNODE *)dllFirst(precLoc->preclist); + precNode; precNode = (RECNODE *)dllNext(&precNode->node)) { precord = precNode->precord; /* If NAME is null then skip this record*/ if(!(precord->name[0])) continue; @@ -403,7 +403,7 @@ static long initDatabase(void) (struct rset *)(precord->rset) = prset; /* initialize mlok and mlis*/ FASTLOCKINIT(&precord->mlok); - lstInit(&(precord->mlis)); + dllInit(&(precord->mlis)); precord->pact=FALSE; /* set lset=0 See determine lock set below*/ precord->lset = 0; @@ -420,8 +420,8 @@ static long initDatabase(void) for(i=0; i< (precHeader->number); i++) { if(!(precLoc = precHeader->papRecLoc[i]))continue; precTypDes = precDes->papRecTypDes[i]; - for(precNode=(RECNODE *)lstFirst(precLoc->preclist); - precNode; precNode = (RECNODE *)lstNext(&precNode->node)) { + for(precNode=(RECNODE *)dllFirst(precLoc->preclist); + precNode; precNode = (RECNODE *)dllNext(&precNode->node)) { precord = precNode->precord; /* If NAME is null then skip this record*/ if(!(precord->name[0])) continue; @@ -479,8 +479,8 @@ static long initDatabase(void) if(!(precLoc = precHeader->papRecLoc[i]))continue; if(!(prset=GET_PRSET(precSup,i))) continue; precTypDes = precDes->papRecTypDes[i]; - for(precNode=(RECNODE *)lstFirst(precLoc->preclist); - precNode; precNode = (RECNODE *)lstNext(&precNode->node)) { + for(precNode=(RECNODE *)dllFirst(precLoc->preclist); + precNode; precNode = (RECNODE *)dllNext(&precNode->node)) { precord = precNode->precord; /* If NAME is null then skip this record*/ if(!(precord->name[0])) continue; @@ -504,8 +504,8 @@ static long initDatabase(void) for(i=0; inumber; i++) { if(!(precLoc = precHeader->papRecLoc[i]))continue; precTypDes = precDes->papRecTypDes[i]; - for(precNode=(RECNODE *)lstFirst(precLoc->preclist); - precNode; precNode = (RECNODE *)lstNext(&precNode->node)) { + for(precNode=(RECNODE *)dllFirst(precLoc->preclist); + precNode; precNode = (RECNODE *)dllNext(&precNode->node)) { precord = precNode->precord; /* If NAME is null then skip this record*/ if(!(precord->name[0])) continue; @@ -576,14 +576,14 @@ static long addToSet( /* unless (!process_passive && !maximize_sevr) or no_elements>1*/ /* remember that all earlier records already have lock set determined*/ if(!lookAhead) return(0); - precNode = (RECNODE *)lstNext(&prootNode->node); + precNode = (RECNODE *)dllNext(&prootNode->node); if(!(precHeader = pdbBase->precHeader)) return(0); for(in=i; innumber; in++) { struct dbCommon *pn; if(!(precLoc = precHeader->papRecLoc[in])) continue; precTypDes = precDes->papRecTypDes[in]; - if(!precNode) precNode = (RECNODE *)lstFirst(precLoc->preclist); + if(!precNode) precNode = (RECNODE *)dllFirst(precLoc->preclist); while(precNode) { pn = precNode->precord; /* If NAME is null then skip this record*/ @@ -611,7 +611,7 @@ static long addToSet( status = addToSet(pn,in,TRUE,i,prootNode,lset); if(status) return(status); } - precNode = (RECNODE *)lstNext(&precNode->node); + precNode = (RECNODE *)dllNext(&precNode->node); } precNode = NULL; } @@ -629,8 +629,8 @@ static long initialProcess(void) if(!(precHeader = pdbBase->precHeader)) return(0); for(i=0; i< (precHeader->number); i++) { if(!(precLoc = precHeader->papRecLoc[i]))continue; - for(precNode=(RECNODE *)lstFirst(precLoc->preclist); - precNode; precNode = (RECNODE *)lstNext(&precNode->node)) { + for(precNode=(RECNODE *)dllFirst(precLoc->preclist); + precNode; precNode = (RECNODE *)dllNext(&precNode->node)) { precord = precNode->precord; /* If NAME is null then skip this record*/ if(!(precord->name[0])) continue; diff --git a/src/db/recGbl.c b/src/db/recGbl.c index 9fa9b1c3c..62f2dce22 100644 --- a/src/db/recGbl.c +++ b/src/db/recGbl.c @@ -43,7 +43,6 @@ #include #include #include -#include #include #include diff --git a/src/db/taskwd.c b/src/db/taskwd.c index da1989d78..dd9896ab4 100644 --- a/src/db/taskwd.c +++ b/src/db/taskwd.c @@ -32,25 +32,11 @@ * .01 07-24-91 mrk Replacement for special purpose scan watchdog */ - -/* Public routines - * taskwdInit() Initialize task watchdor - * - * taskwdInsert(tid,callback,arg) Insert in lists of tasks to watch - * int tid Task Id - * VOIDFUNCPTR callback Address of callback routine - * void *arg Argument to pass to callback - * - * taskwdRemove(tid) Remove from list of tasks to watch - * - * int tid Task Id - */ - #include #include #include #include -#include +#include #include #include @@ -60,14 +46,15 @@ #include struct task_list { - NODE node; + DLLNODE node; VOIDFUNCPTR callback; void *arg; int tid; int suspended; }; -static LIST list; +static DLLLIST list; +static DLLLIST anylist; static FAST_LOCK lock; static int taskwdid=0; volatile int taskwdOn=TRUE; @@ -84,7 +71,8 @@ static void freeList(struct task_list *pt); void taskwdInit() { FASTLOCKINIT(&lock); - lstInit(&list); + dllInit(&list); + dllInit(&anylist); taskwdid = taskSpawn(TASKWD_NAME,TASKWD_PRI, TASKWD_OPT,TASKWD_STACK,(FUNCPTR )taskwdTask, 0,0,0,0,0,0,0,0,0,0); @@ -96,7 +84,7 @@ void taskwdInsert(int tid,VOIDFUNCPTR callback,void *arg) FASTLOCK(&lock); pt = allocList(); - lstAdd(&list,(void *)pt); + dllAdd(&list,(void *)pt); pt->suspended = FALSE; pt->tid = tid; pt->callback = callback; @@ -104,24 +92,56 @@ void taskwdInsert(int tid,VOIDFUNCPTR callback,void *arg) FASTUNLOCK(&lock); } +void taskwdAnyInsert(int tid,VOIDFUNCPTR callback,void *arg) +{ + struct task_list *pt; + + FASTLOCK(&lock); + pt = allocList(); + dllAdd(&anylist,(void *)pt); + pt->tid = tid; + pt->callback = callback; + pt->arg = arg; + FASTUNLOCK(&lock); +} + void taskwdRemove(int tid) { struct task_list *pt; FASTLOCK(&lock); - (void *)pt = lstFirst(&list); + pt = (struct task_list *)dllFirst(&list); while(pt!=NULL) { if (tid == pt->tid) { - lstDelete(&list,(void *)pt); + dllDelete(&list,(void *)pt); freeList(pt); FASTUNLOCK(&lock); return; } - (void *)pt = lstNext((void *)pt); + pt = (struct task_list *)dllNext((DLLNODE *)pt); } FASTUNLOCK(&lock); errMessage(-1,"taskwdRemove failed"); } + +void taskwdAnyRemove(int tid) +{ + struct task_list *pt; + + FASTLOCK(&lock); + pt = (struct task_list *)dllFirst(&anylist); + while(pt!=NULL) { + if (tid == pt->tid) { + dllDelete(&anylist,(void *)pt); + freeList(pt); + FASTUNLOCK(&lock); + return; + } + pt = (struct task_list *)dllNext((void *)pt); + } + FASTUNLOCK(&lock); + errMessage(-1,"taskwdanyRemove failed"); +} static void taskwdTask(void) { @@ -130,18 +150,25 @@ static void taskwdTask(void) while(TRUE) { if(taskwdOn) { FASTLOCK(&lock); - (void *)pt = lstFirst(&list); - while(pt!=NULL) { - (void *)next = lstNext((void *)pt); + pt = (struct task_list *)dllFirst(&list); + while(pt) { + next = (struct task_list *)dllNext((void *)pt); if(taskIsSuspended(pt->tid)) { char *pname; char message[100]; pname = taskName(pt->tid); if(!pt->suspended) { + struct task_list *ptany,*anynext; + sprintf(message,"task %x %s suspended",pt->tid,pname); errMessage(-1,message); if(pt->callback) (pt->callback)(pt->arg); + ptany = (struct task_list *)dllFirst(&anylist); + while(ptany) { + if(ptany->callback) (ptany->callback)(ptany->arg,pt->tid); + ptany = (struct task_list *)dllNext((DLLNODE *)ptany); + } } pt->suspended = TRUE; }