kstmApp/src/O.linux-arm/kstm_registerRecordDeviceDriver.cpp
changeset 4 68a4f654dc00
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kstmApp/src/O.linux-arm/kstm_registerRecordDeviceDriver.cpp	Thu Jul 05 08:48:18 2018 +0000
@@ -0,0 +1,425 @@
+/* THIS IS A GENERATED FILE. DO NOT EDIT! */
+/* Generated from ../O.Common/kstm.dbd */
+
+#include <string.h>
+
+#include "epicsStdlib.h"
+#include "iocsh.h"
+#include "iocshRegisterCommon.h"
+#include "registryCommon.h"
+
+extern "C" {
+
+epicsShareExtern rset *pvar_rset_aSubRSET, *pvar_rset_aaiRSET,
+    *pvar_rset_aaoRSET, *pvar_rset_acalcoutRSET, *pvar_rset_aiRSET,
+    *pvar_rset_aoRSET, *pvar_rset_asynRSET, *pvar_rset_biRSET,
+    *pvar_rset_boRSET, *pvar_rset_calcRSET, *pvar_rset_calcoutRSET,
+    *pvar_rset_compressRSET, *pvar_rset_dfanoutRSET, *pvar_rset_eventRSET,
+    *pvar_rset_fanoutRSET, *pvar_rset_histogramRSET,
+    *pvar_rset_longinRSET, *pvar_rset_longoutRSET, *pvar_rset_lsiRSET,
+    *pvar_rset_lsoRSET, *pvar_rset_mbbiRSET, *pvar_rset_mbbiDirectRSET,
+    *pvar_rset_mbboRSET, *pvar_rset_mbboDirectRSET,
+    *pvar_rset_permissiveRSET, *pvar_rset_printfRSET,
+    *pvar_rset_scalcoutRSET, *pvar_rset_selRSET, *pvar_rset_seqRSET,
+    *pvar_rset_sseqRSET, *pvar_rset_stateRSET, *pvar_rset_stringinRSET,
+    *pvar_rset_stringoutRSET, *pvar_rset_subRSET, *pvar_rset_subArrayRSET,
+    *pvar_rset_swaitRSET, *pvar_rset_transformRSET,
+    *pvar_rset_waveformRSET;
+
+typedef int (*rso_func)(dbRecordType *pdbRecordType);
+epicsShareExtern rso_func pvar_func_aSubRecordSizeOffset,
+    pvar_func_aaiRecordSizeOffset, pvar_func_aaoRecordSizeOffset,
+    pvar_func_acalcoutRecordSizeOffset, pvar_func_aiRecordSizeOffset,
+    pvar_func_aoRecordSizeOffset, pvar_func_asynRecordSizeOffset,
+    pvar_func_biRecordSizeOffset, pvar_func_boRecordSizeOffset,
+    pvar_func_calcRecordSizeOffset, pvar_func_calcoutRecordSizeOffset,
+    pvar_func_compressRecordSizeOffset, pvar_func_dfanoutRecordSizeOffset,
+    pvar_func_eventRecordSizeOffset, pvar_func_fanoutRecordSizeOffset,
+    pvar_func_histogramRecordSizeOffset, pvar_func_longinRecordSizeOffset,
+    pvar_func_longoutRecordSizeOffset, pvar_func_lsiRecordSizeOffset,
+    pvar_func_lsoRecordSizeOffset, pvar_func_mbbiRecordSizeOffset,
+    pvar_func_mbbiDirectRecordSizeOffset, pvar_func_mbboRecordSizeOffset,
+    pvar_func_mbboDirectRecordSizeOffset,
+    pvar_func_permissiveRecordSizeOffset,
+    pvar_func_printfRecordSizeOffset, pvar_func_scalcoutRecordSizeOffset,
+    pvar_func_selRecordSizeOffset, pvar_func_seqRecordSizeOffset,
+    pvar_func_sseqRecordSizeOffset, pvar_func_stateRecordSizeOffset,
+    pvar_func_stringinRecordSizeOffset,
+    pvar_func_stringoutRecordSizeOffset, pvar_func_subRecordSizeOffset,
+    pvar_func_subArrayRecordSizeOffset, pvar_func_swaitRecordSizeOffset,
+    pvar_func_transformRecordSizeOffset,
+    pvar_func_waveformRecordSizeOffset;
+
+static const char * const recordTypeNames[] = {
+    "aSub", "aai", "aao", "acalcout", "ai", "ao", "asyn", "bi", "bo",
+    "calc", "calcout", "compress", "dfanout", "event", "fanout",
+    "histogram", "longin", "longout", "lsi", "lso", "mbbi", "mbbiDirect",
+    "mbbo", "mbboDirect", "permissive", "printf", "scalcout", "sel",
+    "seq", "sseq", "state", "stringin", "stringout", "sub", "subArray",
+    "swait", "transform", "waveform"
+};
+
+static const recordTypeLocation rtl[] = {
+    {pvar_rset_aSubRSET, pvar_func_aSubRecordSizeOffset},
+    {pvar_rset_aaiRSET, pvar_func_aaiRecordSizeOffset},
+    {pvar_rset_aaoRSET, pvar_func_aaoRecordSizeOffset},
+    {pvar_rset_acalcoutRSET, pvar_func_acalcoutRecordSizeOffset},
+    {pvar_rset_aiRSET, pvar_func_aiRecordSizeOffset},
+    {pvar_rset_aoRSET, pvar_func_aoRecordSizeOffset},
+    {pvar_rset_asynRSET, pvar_func_asynRecordSizeOffset},
+    {pvar_rset_biRSET, pvar_func_biRecordSizeOffset},
+    {pvar_rset_boRSET, pvar_func_boRecordSizeOffset},
+    {pvar_rset_calcRSET, pvar_func_calcRecordSizeOffset},
+    {pvar_rset_calcoutRSET, pvar_func_calcoutRecordSizeOffset},
+    {pvar_rset_compressRSET, pvar_func_compressRecordSizeOffset},
+    {pvar_rset_dfanoutRSET, pvar_func_dfanoutRecordSizeOffset},
+    {pvar_rset_eventRSET, pvar_func_eventRecordSizeOffset},
+    {pvar_rset_fanoutRSET, pvar_func_fanoutRecordSizeOffset},
+    {pvar_rset_histogramRSET, pvar_func_histogramRecordSizeOffset},
+    {pvar_rset_longinRSET, pvar_func_longinRecordSizeOffset},
+    {pvar_rset_longoutRSET, pvar_func_longoutRecordSizeOffset},
+    {pvar_rset_lsiRSET, pvar_func_lsiRecordSizeOffset},
+    {pvar_rset_lsoRSET, pvar_func_lsoRecordSizeOffset},
+    {pvar_rset_mbbiRSET, pvar_func_mbbiRecordSizeOffset},
+    {pvar_rset_mbbiDirectRSET, pvar_func_mbbiDirectRecordSizeOffset},
+    {pvar_rset_mbboRSET, pvar_func_mbboRecordSizeOffset},
+    {pvar_rset_mbboDirectRSET, pvar_func_mbboDirectRecordSizeOffset},
+    {pvar_rset_permissiveRSET, pvar_func_permissiveRecordSizeOffset},
+    {pvar_rset_printfRSET, pvar_func_printfRecordSizeOffset},
+    {pvar_rset_scalcoutRSET, pvar_func_scalcoutRecordSizeOffset},
+    {pvar_rset_selRSET, pvar_func_selRecordSizeOffset},
+    {pvar_rset_seqRSET, pvar_func_seqRecordSizeOffset},
+    {pvar_rset_sseqRSET, pvar_func_sseqRecordSizeOffset},
+    {pvar_rset_stateRSET, pvar_func_stateRecordSizeOffset},
+    {pvar_rset_stringinRSET, pvar_func_stringinRecordSizeOffset},
+    {pvar_rset_stringoutRSET, pvar_func_stringoutRecordSizeOffset},
+    {pvar_rset_subRSET, pvar_func_subRecordSizeOffset},
+    {pvar_rset_subArrayRSET, pvar_func_subArrayRecordSizeOffset},
+    {pvar_rset_swaitRSET, pvar_func_swaitRecordSizeOffset},
+    {pvar_rset_transformRSET, pvar_func_transformRecordSizeOffset},
+    {pvar_rset_waveformRSET, pvar_func_waveformRecordSizeOffset}
+};
+
+epicsShareExtern dset *pvar_dset_devAaiSoft, *pvar_dset_devaaiStream,
+    *pvar_dset_devAaoSoft, *pvar_dset_devaaoStream,
+    *pvar_dset_devaCalcoutSoft, *pvar_dset_devAiSoft,
+    *pvar_dset_devAiSoftRaw, *pvar_dset_devAiSoftCallback,
+    *pvar_dset_devTimestampAI, *pvar_dset_devAiGeneralTime,
+    *pvar_dset_asynAiInt32, *pvar_dset_asynAiInt32Average,
+    *pvar_dset_asynAiFloat64, *pvar_dset_asynAiFloat64Average,
+    *pvar_dset_devaiStream, *pvar_dset_devAoSoft, *pvar_dset_devAoSoftRaw,
+    *pvar_dset_devAoSoftCallback, *pvar_dset_asynAoInt32,
+    *pvar_dset_asynAoFloat64, *pvar_dset_devaoStream,
+    *pvar_dset_asynRecordDevice, *pvar_dset_devBiSoft,
+    *pvar_dset_devBiSoftRaw, *pvar_dset_devBiSoftCallback,
+    *pvar_dset_devBiDbState, *pvar_dset_asynBiInt32,
+    *pvar_dset_asynBiUInt32Digital, *pvar_dset_devbiStream,
+    *pvar_dset_devBoSoft, *pvar_dset_devBoSoftRaw,
+    *pvar_dset_devBoSoftCallback, *pvar_dset_devBoGeneralTime,
+    *pvar_dset_devBoDbState, *pvar_dset_asynBoInt32,
+    *pvar_dset_asynBoUInt32Digital, *pvar_dset_devboStream,
+    *pvar_dset_devCalcoutSoft, *pvar_dset_devCalcoutSoftCallback,
+    *pvar_dset_devcalcoutStream, *pvar_dset_devEventSoft,
+    *pvar_dset_devHistogramSoft, *pvar_dset_devLiSoft,
+    *pvar_dset_devLiSoftCallback, *pvar_dset_devLiGeneralTime,
+    *pvar_dset_asynLiInt32, *pvar_dset_asynLiUInt32Digital,
+    *pvar_dset_devlonginStream, *pvar_dset_devLoSoft,
+    *pvar_dset_devLoSoftCallback, *pvar_dset_asynLoInt32,
+    *pvar_dset_asynLoUInt32Digital, *pvar_dset_devlongoutStream,
+    *pvar_dset_devLsiSoft, *pvar_dset_devLsoSoft,
+    *pvar_dset_devLsoSoftCallback, *pvar_dset_devLsoStdio,
+    *pvar_dset_devMbbiSoft, *pvar_dset_devMbbiSoftRaw,
+    *pvar_dset_devMbbiSoftCallback, *pvar_dset_asynMbbiInt32,
+    *pvar_dset_asynMbbiUInt32Digital, *pvar_dset_devmbbiStream,
+    *pvar_dset_devMbbiDirectSoft, *pvar_dset_devMbbiDirectSoftRaw,
+    *pvar_dset_devMbbiDirectSoftCallback,
+    *pvar_dset_asynMbbiDirectUInt32Digital,
+    *pvar_dset_devmbbiDirectStream, *pvar_dset_devMbboSoft,
+    *pvar_dset_devMbboSoftRaw, *pvar_dset_devMbboSoftCallback,
+    *pvar_dset_asynMbboInt32, *pvar_dset_asynMbboUInt32Digital,
+    *pvar_dset_devmbboStream, *pvar_dset_devMbboDirectSoft,
+    *pvar_dset_devMbboDirectSoftRaw, *pvar_dset_devMbboDirectSoftCallback,
+    *pvar_dset_asynMbboDirectUInt32Digital,
+    *pvar_dset_devmbboDirectStream, *pvar_dset_devPrintfSoft,
+    *pvar_dset_devPrintfSoftCallback, *pvar_dset_devPrintfStdio,
+    *pvar_dset_devsCalcoutSoft, *pvar_dset_devSiSoft,
+    *pvar_dset_devSiSoftCallback, *pvar_dset_devTimestampSI,
+    *pvar_dset_devSiGeneralTime, *pvar_dset_asynSiOctetCmdResponse,
+    *pvar_dset_asynSiOctetWriteRead, *pvar_dset_asynSiOctetRead,
+    *pvar_dset_devstringinStream, *pvar_dset_devSoSoft,
+    *pvar_dset_devSoSoftCallback, *pvar_dset_devSoStdio,
+    *pvar_dset_asynSoOctetWrite, *pvar_dset_devstringoutStream,
+    *pvar_dset_devSASoft, *pvar_dset_devSWaitIoEvent,
+    *pvar_dset_devWfSoft, *pvar_dset_asynWfOctetCmdResponse,
+    *pvar_dset_asynWfOctetWriteRead, *pvar_dset_asynWfOctetRead,
+    *pvar_dset_asynWfOctetWrite, *pvar_dset_asynInt8ArrayWfIn,
+    *pvar_dset_asynInt8ArrayWfOut, *pvar_dset_asynInt16ArrayWfIn,
+    *pvar_dset_asynInt16ArrayWfOut, *pvar_dset_asynInt32ArrayWfIn,
+    *pvar_dset_asynInt32ArrayWfOut, *pvar_dset_asynInt32TimeSeries,
+    *pvar_dset_asynFloat32ArrayWfIn, *pvar_dset_asynFloat32ArrayWfOut,
+    *pvar_dset_asynFloat64ArrayWfIn, *pvar_dset_asynFloat64ArrayWfOut,
+    *pvar_dset_asynFloat64TimeSeries, *pvar_dset_devwaveformStream;
+
+static const char * const deviceSupportNames[] = {
+    "devAaiSoft", "devaaiStream", "devAaoSoft", "devaaoStream",
+    "devaCalcoutSoft", "devAiSoft", "devAiSoftRaw", "devAiSoftCallback",
+    "devTimestampAI", "devAiGeneralTime", "asynAiInt32",
+    "asynAiInt32Average", "asynAiFloat64", "asynAiFloat64Average",
+    "devaiStream", "devAoSoft", "devAoSoftRaw", "devAoSoftCallback",
+    "asynAoInt32", "asynAoFloat64", "devaoStream", "asynRecordDevice",
+    "devBiSoft", "devBiSoftRaw", "devBiSoftCallback", "devBiDbState",
+    "asynBiInt32", "asynBiUInt32Digital", "devbiStream", "devBoSoft",
+    "devBoSoftRaw", "devBoSoftCallback", "devBoGeneralTime",
+    "devBoDbState", "asynBoInt32", "asynBoUInt32Digital", "devboStream",
+    "devCalcoutSoft", "devCalcoutSoftCallback", "devcalcoutStream",
+    "devEventSoft", "devHistogramSoft", "devLiSoft", "devLiSoftCallback",
+    "devLiGeneralTime", "asynLiInt32", "asynLiUInt32Digital",
+    "devlonginStream", "devLoSoft", "devLoSoftCallback", "asynLoInt32",
+    "asynLoUInt32Digital", "devlongoutStream", "devLsiSoft", "devLsoSoft",
+    "devLsoSoftCallback", "devLsoStdio", "devMbbiSoft", "devMbbiSoftRaw",
+    "devMbbiSoftCallback", "asynMbbiInt32", "asynMbbiUInt32Digital",
+    "devmbbiStream", "devMbbiDirectSoft", "devMbbiDirectSoftRaw",
+    "devMbbiDirectSoftCallback", "asynMbbiDirectUInt32Digital",
+    "devmbbiDirectStream", "devMbboSoft", "devMbboSoftRaw",
+    "devMbboSoftCallback", "asynMbboInt32", "asynMbboUInt32Digital",
+    "devmbboStream", "devMbboDirectSoft", "devMbboDirectSoftRaw",
+    "devMbboDirectSoftCallback", "asynMbboDirectUInt32Digital",
+    "devmbboDirectStream", "devPrintfSoft", "devPrintfSoftCallback",
+    "devPrintfStdio", "devsCalcoutSoft", "devSiSoft", "devSiSoftCallback",
+    "devTimestampSI", "devSiGeneralTime", "asynSiOctetCmdResponse",
+    "asynSiOctetWriteRead", "asynSiOctetRead", "devstringinStream",
+    "devSoSoft", "devSoSoftCallback", "devSoStdio", "asynSoOctetWrite",
+    "devstringoutStream", "devSASoft", "devSWaitIoEvent", "devWfSoft",
+    "asynWfOctetCmdResponse", "asynWfOctetWriteRead", "asynWfOctetRead",
+    "asynWfOctetWrite", "asynInt8ArrayWfIn", "asynInt8ArrayWfOut",
+    "asynInt16ArrayWfIn", "asynInt16ArrayWfOut", "asynInt32ArrayWfIn",
+    "asynInt32ArrayWfOut", "asynInt32TimeSeries", "asynFloat32ArrayWfIn",
+    "asynFloat32ArrayWfOut", "asynFloat64ArrayWfIn",
+    "asynFloat64ArrayWfOut", "asynFloat64TimeSeries", "devwaveformStream"
+};
+
+static const dset * const devsl[] = {
+    pvar_dset_devAaiSoft, pvar_dset_devaaiStream, pvar_dset_devAaoSoft,
+    pvar_dset_devaaoStream, pvar_dset_devaCalcoutSoft,
+    pvar_dset_devAiSoft, pvar_dset_devAiSoftRaw,
+    pvar_dset_devAiSoftCallback, pvar_dset_devTimestampAI,
+    pvar_dset_devAiGeneralTime, pvar_dset_asynAiInt32,
+    pvar_dset_asynAiInt32Average, pvar_dset_asynAiFloat64,
+    pvar_dset_asynAiFloat64Average, pvar_dset_devaiStream,
+    pvar_dset_devAoSoft, pvar_dset_devAoSoftRaw,
+    pvar_dset_devAoSoftCallback, pvar_dset_asynAoInt32,
+    pvar_dset_asynAoFloat64, pvar_dset_devaoStream,
+    pvar_dset_asynRecordDevice, pvar_dset_devBiSoft,
+    pvar_dset_devBiSoftRaw, pvar_dset_devBiSoftCallback,
+    pvar_dset_devBiDbState, pvar_dset_asynBiInt32,
+    pvar_dset_asynBiUInt32Digital, pvar_dset_devbiStream,
+    pvar_dset_devBoSoft, pvar_dset_devBoSoftRaw,
+    pvar_dset_devBoSoftCallback, pvar_dset_devBoGeneralTime,
+    pvar_dset_devBoDbState, pvar_dset_asynBoInt32,
+    pvar_dset_asynBoUInt32Digital, pvar_dset_devboStream,
+    pvar_dset_devCalcoutSoft, pvar_dset_devCalcoutSoftCallback,
+    pvar_dset_devcalcoutStream, pvar_dset_devEventSoft,
+    pvar_dset_devHistogramSoft, pvar_dset_devLiSoft,
+    pvar_dset_devLiSoftCallback, pvar_dset_devLiGeneralTime,
+    pvar_dset_asynLiInt32, pvar_dset_asynLiUInt32Digital,
+    pvar_dset_devlonginStream, pvar_dset_devLoSoft,
+    pvar_dset_devLoSoftCallback, pvar_dset_asynLoInt32,
+    pvar_dset_asynLoUInt32Digital, pvar_dset_devlongoutStream,
+    pvar_dset_devLsiSoft, pvar_dset_devLsoSoft,
+    pvar_dset_devLsoSoftCallback, pvar_dset_devLsoStdio,
+    pvar_dset_devMbbiSoft, pvar_dset_devMbbiSoftRaw,
+    pvar_dset_devMbbiSoftCallback, pvar_dset_asynMbbiInt32,
+    pvar_dset_asynMbbiUInt32Digital, pvar_dset_devmbbiStream,
+    pvar_dset_devMbbiDirectSoft, pvar_dset_devMbbiDirectSoftRaw,
+    pvar_dset_devMbbiDirectSoftCallback,
+    pvar_dset_asynMbbiDirectUInt32Digital, pvar_dset_devmbbiDirectStream,
+    pvar_dset_devMbboSoft, pvar_dset_devMbboSoftRaw,
+    pvar_dset_devMbboSoftCallback, pvar_dset_asynMbboInt32,
+    pvar_dset_asynMbboUInt32Digital, pvar_dset_devmbboStream,
+    pvar_dset_devMbboDirectSoft, pvar_dset_devMbboDirectSoftRaw,
+    pvar_dset_devMbboDirectSoftCallback,
+    pvar_dset_asynMbboDirectUInt32Digital, pvar_dset_devmbboDirectStream,
+    pvar_dset_devPrintfSoft, pvar_dset_devPrintfSoftCallback,
+    pvar_dset_devPrintfStdio, pvar_dset_devsCalcoutSoft,
+    pvar_dset_devSiSoft, pvar_dset_devSiSoftCallback,
+    pvar_dset_devTimestampSI, pvar_dset_devSiGeneralTime,
+    pvar_dset_asynSiOctetCmdResponse, pvar_dset_asynSiOctetWriteRead,
+    pvar_dset_asynSiOctetRead, pvar_dset_devstringinStream,
+    pvar_dset_devSoSoft, pvar_dset_devSoSoftCallback,
+    pvar_dset_devSoStdio, pvar_dset_asynSoOctetWrite,
+    pvar_dset_devstringoutStream, pvar_dset_devSASoft,
+    pvar_dset_devSWaitIoEvent, pvar_dset_devWfSoft,
+    pvar_dset_asynWfOctetCmdResponse, pvar_dset_asynWfOctetWriteRead,
+    pvar_dset_asynWfOctetRead, pvar_dset_asynWfOctetWrite,
+    pvar_dset_asynInt8ArrayWfIn, pvar_dset_asynInt8ArrayWfOut,
+    pvar_dset_asynInt16ArrayWfIn, pvar_dset_asynInt16ArrayWfOut,
+    pvar_dset_asynInt32ArrayWfIn, pvar_dset_asynInt32ArrayWfOut,
+    pvar_dset_asynInt32TimeSeries, pvar_dset_asynFloat32ArrayWfIn,
+    pvar_dset_asynFloat32ArrayWfOut, pvar_dset_asynFloat64ArrayWfIn,
+    pvar_dset_asynFloat64ArrayWfOut, pvar_dset_asynFloat64TimeSeries,
+    pvar_dset_devwaveformStream
+};
+
+epicsShareExtern drvet *pvar_drvet_drvAsyn, *pvar_drvet_stream;
+
+static const char *driverSupportNames[] = {
+    "drvAsyn", "stream"};
+
+static struct drvet *drvsl[] = {
+    pvar_drvet_drvAsyn,
+    pvar_drvet_stream};
+
+typedef void (*reg_func)(void);
+epicsShareExtern reg_func pvar_func_arrInitialize,
+    pvar_func_arrayTestRegister, pvar_func_asSub,
+    pvar_func_asynInterposeEosRegister,
+    pvar_func_asynInterposeFlushRegister, pvar_func_asynRegister,
+    pvar_func_dbndInitialize, pvar_func_drvAsynIPPortRegisterCommands,
+    pvar_func_drvAsynIPServerPortRegisterCommands,
+    pvar_func_editSseqRegistrar, pvar_func_interpRegister,
+    pvar_func_streamRegistrar, pvar_func_subAveRegister,
+    pvar_func_syncInitialize, pvar_func_tsInitialize,
+    pvar_func_register_func_aSubReadDHTInit,
+    pvar_func_register_func_aSubReadDHTProcess;
+
+epicsShareExtern int * const pvar_int_aCalcAsyncThreshold;
+epicsShareExtern int * const pvar_int_aCalcLoopMax;
+epicsShareExtern int * const pvar_int_aCalcPerformDebug;
+epicsShareExtern int * const pvar_int_aCalcPostfixDebug;
+epicsShareExtern int * const pvar_int_aCalcoutRecordDebug;
+epicsShareExtern int * const pvar_int_aSubReadDHTDebug;
+epicsShareExtern int * const pvar_int_arrayTestDebug;
+epicsShareExtern int * const pvar_int_asCaDebug;
+epicsShareExtern int * const pvar_int_atExitDebug;
+epicsShareExtern double * const pvar_double_boHIGHlimit;
+epicsShareExtern int * const pvar_int_boHIGHprecision;
+epicsShareExtern double * const pvar_double_calcoutODLYlimit;
+epicsShareExtern int * const pvar_int_calcoutODLYprecision;
+epicsShareExtern int * const pvar_int_callbackParallelThreadsDefault;
+epicsShareExtern int * const pvar_int_dbBptNotMonotonic;
+epicsShareExtern int * const pvar_int_dbRecordsOnceOnly;
+epicsShareExtern int * const pvar_int_dbTemplateMaxVars;
+epicsShareExtern int * const pvar_int_debugSubAve;
+epicsShareExtern int * const pvar_int_devaCalcoutSoftDebug;
+epicsShareExtern int * const pvar_int_devsCalcoutSoftDebug;
+epicsShareExtern int * const pvar_int_histogramSDELprecision;
+epicsShareExtern int * const pvar_int_interpDebug;
+epicsShareExtern int * const pvar_int_sCalcLoopMax;
+epicsShareExtern int * const pvar_int_sCalcPerformDebug;
+epicsShareExtern int * const pvar_int_sCalcPostfixDebug;
+epicsShareExtern int * const pvar_int_sCalcStackHW;
+epicsShareExtern int * const pvar_int_sCalcStackLW;
+epicsShareExtern int * const pvar_int_sCalcoutRecordDebug;
+epicsShareExtern double * const pvar_double_seqDLYlimit;
+epicsShareExtern int * const pvar_int_seqDLYprecision;
+epicsShareExtern int * const pvar_int_sseqRecDebug;
+epicsShareExtern int * const pvar_int_streamDebug;
+epicsShareExtern int * const pvar_int_swaitRecordDebug;
+epicsShareExtern int * const pvar_int_transformRecordDebug;
+
+static struct iocshVarDef vardefs[] = {
+    {"aCalcAsyncThreshold", iocshArgInt, pvar_int_aCalcAsyncThreshold},
+    {"aCalcLoopMax", iocshArgInt, pvar_int_aCalcLoopMax},
+    {"aCalcPerformDebug", iocshArgInt, pvar_int_aCalcPerformDebug},
+    {"aCalcPostfixDebug", iocshArgInt, pvar_int_aCalcPostfixDebug},
+    {"aCalcoutRecordDebug", iocshArgInt, pvar_int_aCalcoutRecordDebug},
+    {"aSubReadDHTDebug", iocshArgInt, pvar_int_aSubReadDHTDebug},
+    {"arrayTestDebug", iocshArgInt, pvar_int_arrayTestDebug},
+    {"asCaDebug", iocshArgInt, pvar_int_asCaDebug},
+    {"atExitDebug", iocshArgInt, pvar_int_atExitDebug},
+    {"boHIGHlimit", iocshArgDouble, pvar_double_boHIGHlimit},
+    {"boHIGHprecision", iocshArgInt, pvar_int_boHIGHprecision},
+    {"calcoutODLYlimit", iocshArgDouble, pvar_double_calcoutODLYlimit},
+    {"calcoutODLYprecision", iocshArgInt, pvar_int_calcoutODLYprecision},
+    {"callbackParallelThreadsDefault", iocshArgInt, pvar_int_callbackParallelThreadsDefault},
+    {"dbBptNotMonotonic", iocshArgInt, pvar_int_dbBptNotMonotonic},
+    {"dbRecordsOnceOnly", iocshArgInt, pvar_int_dbRecordsOnceOnly},
+    {"dbTemplateMaxVars", iocshArgInt, pvar_int_dbTemplateMaxVars},
+    {"debugSubAve", iocshArgInt, pvar_int_debugSubAve},
+    {"devaCalcoutSoftDebug", iocshArgInt, pvar_int_devaCalcoutSoftDebug},
+    {"devsCalcoutSoftDebug", iocshArgInt, pvar_int_devsCalcoutSoftDebug},
+    {"histogramSDELprecision", iocshArgInt, pvar_int_histogramSDELprecision},
+    {"interpDebug", iocshArgInt, pvar_int_interpDebug},
+    {"sCalcLoopMax", iocshArgInt, pvar_int_sCalcLoopMax},
+    {"sCalcPerformDebug", iocshArgInt, pvar_int_sCalcPerformDebug},
+    {"sCalcPostfixDebug", iocshArgInt, pvar_int_sCalcPostfixDebug},
+    {"sCalcStackHW", iocshArgInt, pvar_int_sCalcStackHW},
+    {"sCalcStackLW", iocshArgInt, pvar_int_sCalcStackLW},
+    {"sCalcoutRecordDebug", iocshArgInt, pvar_int_sCalcoutRecordDebug},
+    {"seqDLYlimit", iocshArgDouble, pvar_double_seqDLYlimit},
+    {"seqDLYprecision", iocshArgInt, pvar_int_seqDLYprecision},
+    {"sseqRecDebug", iocshArgInt, pvar_int_sseqRecDebug},
+    {"streamDebug", iocshArgInt, pvar_int_streamDebug},
+    {"swaitRecordDebug", iocshArgInt, pvar_int_swaitRecordDebug},
+    {"transformRecordDebug", iocshArgInt, pvar_int_transformRecordDebug},
+    {NULL, iocshArgInt, NULL}
+};
+
+int kstm_registerRecordDeviceDriver(DBBASE *pbase)
+{
+    static int executed = 0;
+    const char *bldTop = "/home/epics/FHI/zweikstm";
+    const char *envTop = getenv("TOP");
+
+    if (envTop && strcmp(envTop, bldTop)) {
+        printf("Warning: IOC is booting with TOP = \"%s\"\n"
+               "          but was built with TOP = \"%s\"\n",
+               envTop, bldTop);
+    }
+
+    if (!pbase) {
+        printf("pdbbase is NULL; you must load a DBD file first.\n");
+        return -1;
+    }
+
+    if (executed) {
+        printf("Warning: Registration already done.\n");
+    }
+    executed = 1;
+
+    registerRecordTypes(pbase, NELEMENTS(rtl), recordTypeNames, rtl);
+    registerDevices(pbase, NELEMENTS(devsl), deviceSupportNames, devsl);
+    registerDrivers(pbase, NELEMENTS(drvsl), driverSupportNames, drvsl);
+    pvar_func_arrInitialize();
+    pvar_func_arrayTestRegister();
+    pvar_func_asSub();
+    pvar_func_asynInterposeEosRegister();
+    pvar_func_asynInterposeFlushRegister();
+    pvar_func_asynRegister();
+    pvar_func_dbndInitialize();
+    pvar_func_drvAsynIPPortRegisterCommands();
+    pvar_func_drvAsynIPServerPortRegisterCommands();
+    pvar_func_editSseqRegistrar();
+    pvar_func_interpRegister();
+    pvar_func_streamRegistrar();
+    pvar_func_subAveRegister();
+    pvar_func_syncInitialize();
+    pvar_func_tsInitialize();
+    pvar_func_register_func_aSubReadDHTInit();
+    pvar_func_register_func_aSubReadDHTProcess();
+    iocshRegisterVariable(vardefs);
+    return 0;
+}
+
+/* kstm_registerRecordDeviceDriver */
+static const iocshArg rrddArg0 = {"pdbbase", iocshArgPdbbase};
+static const iocshArg *rrddArgs[] = {&rrddArg0};
+static const iocshFuncDef rrddFuncDef =
+    {"kstm_registerRecordDeviceDriver", 1, rrddArgs};
+static void rrddCallFunc(const iocshArgBuf *)
+{
+    kstm_registerRecordDeviceDriver(*iocshPpdbbase);
+}
+
+} // extern "C"
+
+/*
+ * Register commands on application startup
+ */
+static int Registration() {
+    iocshRegisterCommon();
+    iocshRegister(&rrddFuncDef, rrddCallFunc);
+    return 0;
+}
+
+static int done = Registration();