replace lstLib with dllEpicsLib

This commit is contained in:
Marty Kraimer
1993-07-23 15:59:42 +00:00
parent 668c431efb
commit be2b004a44
12 changed files with 193 additions and 172 deletions

View File

@@ -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 <vxWorks.h>
#include <stdlib.h>
#include <types.h>
#include <semLib.h>
#include <rngLib.h>
#include <lstLib.h>
#include <logLib.h>
#include <intLib.h>
#include <dbDefs.h>
#include <callback.h>
#include <taskwd.h>
#include <errMdef.h>
#include <task_params.h>
#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;

View File

@@ -77,7 +77,6 @@
#include <taskLib.h>
#include <vxLib.h>
#include <tickLib.h>
#include <lstLib.h>
#include <fast_lock.h>
#include <cvtFast.h>

View File

@@ -47,9 +47,8 @@
/* needed for NULL */
#include <vxWorks.h>
/* needed for typedef of caddr_t which is used in struct dbAddr */
#include <types.h>
#include <stdlib.h>
#include <stdio.h>
/* needed for PVNAME_SZ and FLDNAME_SZ ... must be before dbAccess.h */
#include <dbDefs.h>
@@ -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)

View File

@@ -62,7 +62,7 @@
#include <vxWorks.h>
#include <types.h>
#include <wdLib.h>
#include <lstLib.h>
#include <dllEpicsLib.h>
#include <semLib.h>
#include <tsDefs.h>
@@ -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;

View File

@@ -45,7 +45,7 @@
#include <string.h>
#include <semLib.h>
#include <rngLib.h>
#include <lstLib.h>
#include <dllEpicsLib.h>
#include <vxLib.h>
#include <tickLib.h>
@@ -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)
priority<NUM_CALLBACK_PRIORITIES; priority++, piosl++){
piosl->callback.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;
priority<NUM_CALLBACK_PRIORITIES; priority++, piosl++){
if(lstCount(&piosl->scan_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; i<precHeader->number; 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; i<precHeader->number; 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;

View File

@@ -42,7 +42,7 @@
#include <math.h>
#include <errMdef.h>
#include <lstLib.h>
#include <dllEpicsLib.h>
#include <dbDefs.h>
#include <sdrHeader.h>
#include <cvtFast.h>
@@ -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; hashInd<HASH_NO; hashInd++) {
if(ppvd[hashInd] == NULL) continue;
ppvdlist=ppvd[hashInd];
ppvdNode = (PVDENTRY *) lstFirst(ppvdlist);
ppvdNode = (PVDENTRY *) dllFirst(ppvdlist);
while(ppvdNode) {
next = (PVDENTRY *) lstNext((NODE*)ppvdNode);
lstDelete(ppvdlist,(NODE*)ppvdNode);
next = (PVDENTRY *) dllNext((DLLNODE*)ppvdNode);
dllDelete(ppvdlist,(DLLNODE*)ppvdNode);
free((void *)ppvdNode);
ppvdNode = next;
}
@@ -4037,8 +4037,8 @@ DBBASE *pdbbase;
#endif /*__STDC__*/
{
unsigned short hashInd;
LIST **ppvd = (LIST **) pdbbase->ppvd;
LIST *ppvdlist;
DLLLIST **ppvd = (DLLLIST **) pdbbase->ppvd;
DLLLIST *ppvdlist;
PVDENTRY *ppvdNode;
int number;
@@ -4047,13 +4047,13 @@ DBBASE *pdbbase;
for (hashInd=0; hashInd<HASH_NO; hashInd++) {
if(ppvd[hashInd] == NULL) continue;
ppvdlist=ppvd[hashInd];
ppvdNode = (PVDENTRY *) lstFirst(ppvdlist);
printf(" %3.3hd=%3.3d\n",hashInd,lstCount(ppvdlist));
ppvdNode = (PVDENTRY *) dllFirst(ppvdlist);
printf(" %3.3hd=%3.3d\n",hashInd,dllCount(ppvdlist));
number=0;
while(ppvdNode) {
printf(" %s",(char *)ppvdNode->precnode->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");

View File

@@ -81,7 +81,7 @@
#include <string.h>
#include <stdio.h>
#include <lstLib.h>
#include <dllEpicsLib.h>
#include <fast_lock.h>
#include <dbDefs.h>
#include <dbAccess.h>
@@ -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;

View File

@@ -32,12 +32,13 @@
* .03 08-13-91 mrk Added extra null arg to db_get_field calls
*/
#include <vxWorks.h>
#include <types.h>
#include <stdlib.h>
#include <stdio.h>
#include <db_access.h>
/* 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;

View File

@@ -66,11 +66,11 @@
#include <recSup.h>
#endif
#include <lstLib.h>
#include <dbBase.h>
#include <dbRecDes.h>
#include <dbRecords.h>
#include <errMdef.h>
#include <errno.h>
#include <error.h>
#include <sdrHeader.h>
@@ -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);
}

View File

@@ -61,7 +61,7 @@
#include <stdarg.h>
#include <stdio.h>
#include <string.h>
#include <lstLib.h>
#include <dllEpicsLib.h>
#include <sysLib.h>
#include <symLib.h>
#include <sysSymTbl.h> /* 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; 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;
@@ -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; in<precHeader->number; 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;

View File

@@ -43,7 +43,6 @@
#include <vxWorks.h>
#include <limits.h>
#include <types.h>
#include <lstLib.h>
#include <stdioLib.h>
#include <strLib.h>

View File

@@ -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 <vxWorks.h>
#include <vxLib.h>
#include <stdlib.h>
#include <stdio.h>
#include <lstLib.h>
#include <dllEpicsLib.h>
#include <taskLib.h>
#include <dbDefs.h>
@@ -60,14 +46,15 @@
#include <fast_lock.h>
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;
}