Loading and initialization of the records during run-time after iocInit

Registered by Zheqiao Geng

Loading and initialization of the EPICS records during run-time are very useful for hot-swap device control (like MicroTCA), so that we do not need to reboot the IOC everytime a new card is plugged in. A group of APIs of "dbRecordDynamic" are introduced to the EPICS base to perform the dynamic records loading. A routine of "dbLockSetCreate" is added to the "dbLock.c" to create new lockset for the newly loaded record. The module follows similar procedure of iocInit but with some more steps to handle the dynamic issues, like the conflict between the new record and existing records. The module has been tested locally at SLAC and I would like more people to review it and even consider it for the future development of epics base

Blueprint information

Status:
Not started
Approver:
None
Priority:
Undefined
Drafter:
Zheqiao Geng
Direction:
Needs approval
Assignee:
Zheqiao Geng
Definition:
New
Series goal:
None
Implementation:
Unknown
Milestone target:
None

Sprints

Whiteboard

This proposal made no attempt to understand or protect against attempts to access the record from other threads while the IOC is still running. For example, CA searches can occur at almost any time and will traverse the database structures trying to match the record name against a channel name.

This implementation cannot easily be fixed, because there is no suitable locking in the database structures. A lot more work will be needed to be able to do record creation at runtime safely.

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.