diff --git a/src/ioc/db/dbChannel.c b/src/ioc/db/dbChannel.c index b6ed43efa..d5fb0508a 100644 --- a/src/ioc/db/dbChannel.c +++ b/src/ioc/db/dbChannel.c @@ -53,7 +53,7 @@ static void *dbChannelFreeList; static void *chFilterFreeList; static void *dbchStringFreeList; -static void dbChannelExit(void* junk) +void dbChannelExit(void) { freeListCleanup(dbChannelFreeList); freeListCleanup(chFilterFreeList); @@ -69,7 +69,6 @@ void dbChannelInit (void) freeListInitPvt(&dbChannelFreeList, sizeof(dbChannel), 128); freeListInitPvt(&chFilterFreeList, sizeof(chFilter), 64); freeListInitPvt(&dbchStringFreeList, sizeof(epicsOldString), 128); - epicsAtExit(dbChannelExit, NULL); } static void chf_value(parseContext *parser, parse_result *presult) diff --git a/src/ioc/db/dbChannel.h b/src/ioc/db/dbChannel.h index a8a2f4908..9f21887db 100644 --- a/src/ioc/db/dbChannel.h +++ b/src/ioc/db/dbChannel.h @@ -150,6 +150,7 @@ struct dbCommon; struct dbFldDes; epicsShareFunc void dbChannelInit (void); +epicsShareFunc void dbChannelExit(void); epicsShareFunc long dbChannelTest(const char *name); epicsShareFunc dbChannel * dbChannelCreate(const char *name); epicsShareFunc long dbChannelOpen(dbChannel *chan); diff --git a/src/ioc/misc/iocInit.c b/src/ioc/misc/iocInit.c index 0e553efd6..6b317915f 100644 --- a/src/ioc/misc/iocInit.c +++ b/src/ioc/misc/iocInit.c @@ -683,6 +683,7 @@ int iocShutdown(void) iterateRecords(doFreeRecord, NULL); dbLockCleanupRecords(pdbbase); asShutdown(); + dbChannelExit(); iocshFree(); } iocState = iocStopped;