db/dbCa: add dbCaShutdown() to API, complete shutdown handling
This commit is contained in:
committed by
Michael Davidsaver
parent
23e22313f1
commit
e83bc13a5e
@@ -173,15 +173,22 @@ void dbCaCallbackProcess(void *usrPvt)
|
||||
dbScanUnlock(pdbCommon);
|
||||
}
|
||||
|
||||
static void dbCaShutdown(void *arg)
|
||||
void dbCaShutdown(void)
|
||||
{
|
||||
if (dbCaCtl == ctlRun) {
|
||||
if (dbCaCtl == ctlRun || dbCaCtl == ctlPause) {
|
||||
dbCaCtl = ctlExit;
|
||||
epicsEventSignal(workListEvent);
|
||||
epicsEventMustWait(startStopEvent);
|
||||
epicsEventDestroy(startStopEvent);
|
||||
epicsEventDestroy(workListEvent);
|
||||
}
|
||||
}
|
||||
|
||||
static void dbCaExit(void *arg)
|
||||
{
|
||||
dbCaShutdown();
|
||||
}
|
||||
|
||||
void dbCaLinkInit(void)
|
||||
{
|
||||
dbServiceIOInit();
|
||||
@@ -194,19 +201,23 @@ void dbCaLinkInit(void)
|
||||
epicsThreadGetStackSize(epicsThreadStackBig),
|
||||
dbCaTask, NULL);
|
||||
epicsEventMustWait(startStopEvent);
|
||||
epicsAtExit(dbCaShutdown, NULL);
|
||||
epicsAtExit(dbCaExit, NULL);
|
||||
}
|
||||
|
||||
void dbCaRun(void)
|
||||
{
|
||||
dbCaCtl = ctlRun;
|
||||
epicsEventSignal(workListEvent);
|
||||
if (dbCaCtl == ctlPause) {
|
||||
dbCaCtl = ctlRun;
|
||||
epicsEventSignal(workListEvent);
|
||||
}
|
||||
}
|
||||
|
||||
void dbCaPause(void)
|
||||
{
|
||||
dbCaCtl = ctlPause;
|
||||
epicsEventSignal(workListEvent);
|
||||
if (dbCaCtl == ctlRun) {
|
||||
dbCaCtl = ctlPause;
|
||||
epicsEventSignal(workListEvent);
|
||||
}
|
||||
}
|
||||
|
||||
void dbCaAddLinkCallback(struct link *plink,
|
||||
|
||||
@@ -26,6 +26,7 @@ epicsShareFunc void dbCaCallbackProcess(void *usrPvt);
|
||||
epicsShareFunc void dbCaLinkInit(void);
|
||||
epicsShareFunc void dbCaRun(void);
|
||||
epicsShareFunc void dbCaPause(void);
|
||||
epicsShareFunc void dbCaShutdown(void);
|
||||
|
||||
epicsShareFunc void dbCaAddLinkCallback(struct link *plink,
|
||||
dbCaCallback connect, dbCaCallback monitor, void *userPvt);
|
||||
|
||||
Reference in New Issue
Block a user