diff --git a/documentation/RELEASE_NOTES.html b/documentation/RELEASE_NOTES.html index 045881606..45ab3ed15 100644 --- a/documentation/RELEASE_NOTES.html +++ b/documentation/RELEASE_NOTES.html @@ -13,6 +13,42 @@
The existing OSI epicsFindSymbol API has been expanded to support dynamic +loading of binary files, on architectures where the facilities necessary to +implement this are provided (currently Linux, Solaris, Darwin and vxWorks). A +new but optional command is provided for iocsh which calls the new +epicsLoadLibrary() function. In order to include this command in an +IOC, you must include the dlload.dbd file; the command will then be +installed when the IOC's ioc_registerRecordDeviceDriver routine is +run.
+ +To dynamically load a new routine for use with the sub or aSub record types, +you also have to register the subroutines at runtime. You can use the EPICS +build system and the registerRecordDeviceDriver.pl script to write the necessary +code for you, you just have to create a .dbd file that declares the functions in +the library and add the derived .cpp file to the library sources. The product of +your build should be a LOADABLE_LIBRARY to ensure that the correct +linker commands are used.
+ +After a shared library is loaded into the IOC using the new iocsh +dlload command you will usually have to run the +lib_registerRecordDeviceDriver routine to register the components that +were mentioned in the .dbd file. After registration the functions can be found +as normal by setting the SNAM field of your sub or aSub record instances. Once +loaded, shared libraries cannot be unloaded again as there is no way to be sure +that some other part of the IOC doesn't still have a pointer to something inside +the module.
+ +Components provided by a shared library can include functions for sub and +aSub records, iocsh commands, time providers and sequence programs. Record and +device support code may be possible, but there are complications in creating the +.dbd file so we don't recommend it yet. It is possible to load libraries after +iocInit, but the code is not re-entrant so should only be used from the main +thread. Adding new record types or device support will not work after +iocInit.
+The CA::put and CA::put_callback methods now use the native