Several devLib routines don't use vector table
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
EPICS Base |
Fix Released
|
Medium
|
mdavidsaver |
Bug Description
devLib uses a vector table for most of its back-end routines to allow the bus interface routines to be external to Base and was especially designed for bus extenders such as the Struck SIS3100 PCI to VME bridge used on Linux by CLS and the Australian Synchrotron. Unfortunately this table is not used for the API routine devConnectInter
Internally devLib.c uses an initialized flag instead of an epicsThreadOnce object, which is not SMP-safe. This initialization is not checked for all devLib routines though.
We should probably change the way that the pdevLibVirtualOS pointer gets set and have the platform register itself and its virtual routines with devLib.
We should also provide standard routines (target-specified macros) for doing I/O operations on 8, 16 and 32-bit quantities, for platforms that don't provide memory-mapped I/O. Till Strauman has these for RTEMS...
Additional information:
Workaround: Use devConnectInter
Both vxWorks and RTEMS implement devConnectInter
Version: R3.14.10
Original Mantis Bug: mantis-301
http://
Related branches
- Eric Norum (community): Approve
- Ralph Lange: Approve
- Andrew Johnson: Approve
-
Diff: 5089 lines (+2492/-2392)15 files modifieddocumentation/RELEASE_NOTES.html (+13/-0)
src/libCom/Makefile (+4/-2)
src/libCom/osi/devLib.c (+0/-1078)
src/libCom/osi/devLib.h (+0/-444)
src/libCom/osi/devLibVME.c (+1159/-0)
src/libCom/osi/devLibVME.h (+312/-0)
src/libCom/osi/devLibVMEImpl.h (+104/-0)
src/libCom/osi/os/RTEMS/devLibOSD.c (+0/-350)
src/libCom/osi/os/RTEMS/devLibVMEOSD.c (+366/-0)
src/libCom/osi/os/cygwin32/devLibOSD.c (+0/-15)
src/libCom/osi/os/cygwin32/devLibVMEOSD.c (+15/-0)
src/libCom/osi/os/default/devLibOSD.c (+0/-17)
src/libCom/osi/os/default/devLibVMEOSD.c (+17/-0)
src/libCom/osi/os/vxWorks/devLibOSD.c (+0/-486)
src/libCom/osi/os/vxWorks/devLibVMEOSD.c (+502/-0)
Changed in epics-base: | |
assignee: | nobody → mdavidsaver (mdavidsaver) |
Changed in epics-base: | |
status: | Confirmed → Fix Committed |
Changed in epics-base: | |
status: | Fix Committed → Fix Released |