diff --git a/src/libCom/misc/epicsExit.c b/src/libCom/misc/epicsExit.c index dc0a0193c..3884b9f54 100644 --- a/src/libCom/misc/epicsExit.c +++ b/src/libCom/misc/epicsExit.c @@ -14,11 +14,11 @@ #include #include +#define epicsExportSharedSymbols #include "ellLib.h" #include "epicsThread.h" #include "epicsMutex.h" #include "cantProceed.h" -#define epicsExportSharedSymbols #include "epicsExit.h" typedef void (*epicsExitFunc)(void *arg); @@ -38,13 +38,10 @@ static exitPvt exitPvtInstance; static exitPvt *pexitPvt = &exitPvtInstance; static epicsThreadOnceId createOnce = EPICS_THREAD_ONCE_INIT; -static void atExit(void) {epicsExit(0);} - static void createExitPvt(void) { pexitPvt->lock = epicsMutexMustCreate(); ellInit(&pexitPvt->list); - atexit(atExit); } epicsShareFunc void epicsShareAPI epicsExitCallAtExits(void) diff --git a/src/libCom/osi/os/posix/osdThread.c b/src/libCom/osi/os/posix/osdThread.c index ca190253a..9f573f4cb 100644 --- a/src/libCom/osi/os/posix/osdThread.c +++ b/src/libCom/osi/os/posix/osdThread.c @@ -33,6 +33,7 @@ #include "cantProceed.h" #include "errlog.h" #include "epicsAssert.h" +#include "epicsExit.h" /* Until these can be demonstrated to work leave them undefined*/ #undef _POSIX_THREAD_ATTR_STACKSIZE @@ -106,6 +107,7 @@ static void myAtExit(void) fprintf(stderr,"osdThread myAtExit extered multiple times\n"); return; } + epicsExitCallAtExits(); status = pthread_mutex_lock(&listLock); checkStatusQuit(status,"pthread_mutex_lock","myAtExit"); pthreadSelf = (epicsThreadOSD *)pthread_getspecific(getpthreadInfo);