db/dbCa: add dbCaShutdown() to API, complete shutdown handling

This commit is contained in:
Ralph Lange
2014-06-23 16:28:21 -04:00
committed by Michael Davidsaver
parent 23e22313f1
commit e83bc13a5e
2 changed files with 19 additions and 7 deletions

View File

@@ -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,

View File

@@ -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);