fix several bugs

This commit is contained in:
Marty Kraimer
2000-05-19 15:50:07 +00:00
parent 8230a0622d
commit faf5c4fcdf
2 changed files with 11 additions and 4 deletions

View File

@@ -44,6 +44,7 @@ static semBinaryId callbackSem[NUM_CALLBACK_PRIORITIES];
static ringId callbackQ[NUM_CALLBACK_PRIORITIES];
static threadId callbackTaskId[NUM_CALLBACK_PRIORITIES];
static int ringOverflow[NUM_CALLBACK_PRIORITIES];
static void callbackInitPvt(void *);
volatile int callbackRestart=FALSE;
static int priorityValue[NUM_CALLBACK_PRIORITIES] = {0,1,2};
@@ -69,15 +70,21 @@ int epicsShareAPI callbackSetQueueSize(int size)
return(0);
}
long epicsShareAPI callbackInit()
static void callbackInitPvt(void *arg)
{
int i;
timerQueue = osiTimerQueueCreate(threadPriorityScanLow);
timerQueue = osiTimerQueueCreate(threadPriorityScanHigh);
for(i=0; i<NUM_CALLBACK_PRIORITIES; i++) {
start(i);
}
return(0);
}
void epicsShareAPI callbackInit()
{
static threadOnceId callbackOnceFlag = OSITHREAD_ONCE_INIT;
void *arg = 0;
threadOnce(&callbackOnceFlag,callbackInitPvt,arg);
}
/* Routine which places requests into callback queue*/

View File

@@ -58,7 +58,7 @@ typedef void (*CALLBACKFUNC)(struct callbackPvt*);
#define callbackGetUser(USER,PCALLBACK)\
( (USER) = (void *)((CALLBACK *)(PCALLBACK))->user )
epicsShareFunc long epicsShareAPI callbackInit();
epicsShareFunc void epicsShareAPI callbackInit();
epicsShareFunc void epicsShareAPI callbackRequest(CALLBACK *pCallback);
epicsShareFunc void epicsShareAPI callbackRequestProcessCallback(
CALLBACK *pCallback,int Priority, void *pRec);