From 01fa58f37b4ab74e355fb1bc74b1b1fcaaa96d1a Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Sun, 23 Jun 2019 09:33:08 -0700 Subject: [PATCH] dbCa join worker --- modules/database/src/ioc/db/dbCa.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/modules/database/src/ioc/db/dbCa.c b/modules/database/src/ioc/db/dbCa.c index 65a8327cf..935c397d4 100644 --- a/modules/database/src/ioc/db/dbCa.c +++ b/modules/database/src/ioc/db/dbCa.c @@ -68,6 +68,7 @@ static volatile enum dbCaCtl_t { ctlInit, ctlRun, ctlPause, ctlExit } dbCaCtl; static epicsEventId startStopEvent; +static epicsThreadId dbCaWorker; struct ca_client_context * dbCaClientContext; @@ -258,10 +259,18 @@ void dbCaShutdown(void) dbCaCtl = ctlExit; epicsEventSignal(workListEvent); epicsEventMustWait(startStopEvent); + if(dbCaWorker) + epicsThreadMustJoin(dbCaWorker); } static void dbCaLinkInitImpl(int isolate) { + epicsThreadOpts opts; + epicsThreadOptsDefaults(&opts); + opts.stackSize = epicsThreadGetStackSize(epicsThreadStackBig); + opts.priority = epicsThreadPriorityMedium; + opts.joinable = 1; + dbServiceIsolate = isolate; dbServiceIOInit(); @@ -274,9 +283,8 @@ static void dbCaLinkInitImpl(int isolate) startStopEvent = epicsEventMustCreate(epicsEventEmpty); dbCaCtl = ctlPause; - epicsThreadCreate("dbCaLink", epicsThreadPriorityMedium, - epicsThreadGetStackSize(epicsThreadStackBig), - dbCaTask, NULL); + dbCaWorker = epicsThreadCreateOpt("dbCaLink", dbCaTask, NULL, &opts); + /* wait for worker to startup and initialize dbCaClientContext */ epicsEventMustWait(startStopEvent); }