Under vxWorks osiFindGlobalSymbol() can be used to dynamically bind to record, device, and driver support and functions for use with subroutine records. However on most other systems this routine is not functional, so a registry facility is provided to implement the binding. Any item that is looked up by name at runtime must be registered for it to be visible to other code.
At compile time a perl script reads the IOCs database definition file and produces a C source file containing a routine which registers all record/device/driver/function support defined in that file.
This is the code which implements the symbol table. Each different type of symbol has its own unique ID. Everything to be registered is stored in the same gpHash table.
Provides addresses for both the record support entry table and the routine which computes the size and offset of each field.
This provides addresses for device support entry tables.
This provides addresses for driver support tables.
registryFunctionAdd registers a single function. registryFunctionRefAdd registers several functions.
If you use these routines to register functions directly instead of using a function() statement in a database definition file, the registered functions will not appear in the output from the dbDumpFunction command.
A version of this is provided for vxWorks. This version makes it unnecessary to use registerRecordDeviceDriver.pl or register other external names. Thus for vxWorks everything can work almost exactly like it did in release 3.13.x
This is the perl script which creates a C source file that registers record/device/driver/function support. The following steps are take as part of the standard Make rules: