From e881cb15c4a9ba7c74b61782e0bb6b043ddcdfd0 Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Thu, 25 Feb 2021 07:58:40 -0800 Subject: [PATCH] registerAllRecordDeviceDrivers() handle function --- .../ioc/misc/registerAllRecordDeviceDrivers.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/modules/database/src/ioc/misc/registerAllRecordDeviceDrivers.cpp b/modules/database/src/ioc/misc/registerAllRecordDeviceDrivers.cpp index 0afb997d4..8ba5182d0 100644 --- a/modules/database/src/ioc/misc/registerAllRecordDeviceDrivers.cpp +++ b/modules/database/src/ioc/misc/registerAllRecordDeviceDrivers.cpp @@ -185,6 +185,21 @@ registerAllRecordDeviceDrivers(DBBASE *pdbbase) registerJLinks(pdbbase, 1, ptr); } + // for each function() + for(ELLNODE *cur = ellFirst(&pdbbase->functionList); cur; cur = ellNext(cur)) { + dbText& reg = *CONTAINER(cur, dbText, node); + + typedef void(*registrar)(void); + registrar* ptr = lookupAs("pvar_func_register_func_", reg.text); + + if(!ptr || !*ptr) { + fprintf(stderr, "Unable to find function '%s' : %s\n", reg.text, epicsLoadError()); + return 1; + } + + runRegistrarOnce(*ptr); + } + // for each registrar() for(ELLNODE *cur = ellFirst(&pdbbase->registrarList); cur; cur = ellNext(cur)) { dbText& reg = *CONTAINER(cur, dbText, node); @@ -193,7 +208,7 @@ registerAllRecordDeviceDrivers(DBBASE *pdbbase) registrar* ptr = lookupAs("pvar_func_", reg.text); if(!ptr || !*ptr) { - fprintf(stderr, "Unable to find registar '%s' : %s\n", reg.text, epicsLoadError()); + fprintf(stderr, "Unable to find registrar '%s' : %s\n", reg.text, epicsLoadError()); return 1; }