diff --git a/src/registry/registerRecordDeviceDriver.pl b/src/registry/registerRecordDeviceDriver.pl index b25d2e08c..1967f87c3 100755 --- a/src/registry/registerRecordDeviceDriver.pl +++ b/src/registry/registerRecordDeviceDriver.pl @@ -36,6 +36,9 @@ while() { /registrar\s*\(\s*(\w+)/; $registrar[$numberRegistrar++] = $1; } + if (/variable\s*\(\s*(\w+)/) { + push @variables, $1; + } } close(INP) or die "$! closing file"; # beginning of generated routine @@ -137,6 +140,18 @@ if($numberRegistrar>0) { for ($i=0; $i<$numberRegistrar; $i++) { print "epicsShareExtern void (*p$registrar[$i])(void);\n"; } + print "\n"; +} + +if (@variables) { + foreach $var (@variables) { + print "epicsShareExtern int *p$var;\n"; + } + print "static struct iocshVarDef vardefs[] = {\n"; + foreach $var (@variables) { + print "\t{\"$var\", iocshArgInt, (void *)p$var},\n"; + } + print "\t{NULL, iocshArgInt, NULL}\n};\n\n"; } #Now actual registration code. @@ -201,6 +216,10 @@ if($numberRegistrar>0) { print " (*p$registrar[$i])();\n"; } } + +if (@variables) { + print " iocshRegisterVariable(vardefs);\n"; +} print << "END" ; return(0); }