140 likes | 156 Views
3.14 Work List. IOC Core Channel Access. Changes to IOC Core. Online add/delete of record instances Tool to support online add/delete OS independent layer to support port of IOC Core Revisit time stamp library Redundancy Standard set of statistics available through pseudo-channels
E N D
3.14 Work List IOC Core Channel Access
Changes to IOC Core • Online add/delete of record instances • Tool to support online add/delete • OS independent layer to support port of IOC Core • Revisit time stamp library • Redundancy • Standard set of statistics available through pseudo-channels • Log writes to database fields • Use priority in scan tasks differently • Frequency-based monitor notification • Port database to the portable server • Improve array handling capabilities • ANSI-fy src/drv/old - drivers Put off until later…….. • Extensible link type definition - 4.0 • Adding record, device, driver support
Changes to IOC Core - Online Add/Delete • Changeable links was the first part of the task and was completed in 3.13 • dynamic lockset computation taken from IOC init and done dynamically • Downloading record instances during operation will need to be supported • IOC initialization has to be broken up and called at any time • record initialization must be possible at any time during operation • device initialization and driver initialization must be possible at any time • modifications may need to be made for all device and driver support
Changes to IOC Core - tools to support add/delete • Is the request to load new records initiated in the host or the target? • Will we use dbLoadRecords or a network protocol to accomplish this? • How closely integrated will this be with the existing configuration tools? • CAPFAST • GDCT • DCT • Relational and OO databases • ASCII (AWK/PERL/VI)
Changes to IOC Core - OS independent layer • Operating system services needing a compatibility layer • SymFindByName • Semaphores • Task Create • Interrupt Services • Timer management • Bus to local addresses • Sockets • Create list of services needed - partial list above • Put the existing ones in the source release control for common use • Document the compatibility layer
Changes to IOC Core - Revisit Time Stamp Library • Use UNIX time stamp format • Use the standard UNIX routines for time in place of the existing time stamp library • Verify the year 2000 is no problem • Resolve a newly discovered time stamp issue at TJNAF
Changes to IOC Core - Redundancy • All database record types? • State notation language • Which drivers can handle redundant hardware? • How do you mix redundant and non-redundant hardware capability • Recreate it - merge Tate changes • Is this required by anyone?
Changes to IOC Core - Statistics from IOC • CPU utilization • Memory utilization • Stack usage • Critical task state of health • running/suspended/etc… • periodicity of scan tasks - do they start on time • number of records processed by each scan task • CPU utilization per task
Changes to IOC Core - Logging Database Writes • Uses of write logging • discover unexpected access to a record • use the log as a playback script complete with delay/value information • Logging done at the channel access write level • Ability to log writes to a database enabled on a record by record basis • Integrate the logging into a tool that allows callable access
Changes to IOC Core - Task Priorities • Currently scan tasks are given tasks priorities: ioevent high, ioevent med, ioevent low, .1 sec high, .1secmed. .10 sec low, channel acc. • New scheme would allow setting the relative priorities of scan tasks amongst themselves and in relationship with the channel access server. NOTE: channel access buffering is a side affect of having a lower priority than scanning • Several priorities will be reserved above channel access to continue the current relationship between scan tasks and channel access. • Several priorities will be reserved where the channel access client and the scan tasks can be interleaved to provide more suitable environment for closed-loop control over the network and a more controlled degradation mode.
Changes to IOC Core - Frequency Based Monitors • Add two notification methods: minimum interval and regular interval • Minimum interval would check only when the record is being processed. Notification is sent when the specified time has expired - this is inline code for record processing. • Regular interval monitors would send values regardless of record processing • a new thread would be needed to service these • synchronizing with record processing is important for time stamp alignment
Channel Access Modifications - V3 w/Old Server • 1 dimensional big arrays supported • name caching / alternate name services in the client • coalesce multiple requests for a single channel to one request to the IOC • use a common data object for the gateway and CDEV (merge the functionality of CDEV Data and GDD)
Channel Access Modifications - V3 w/Portable Server (3.14 or later) • Put the new server in the IOC • Revise CA buffering so that 32K is not used - it becomes configurable • Control over monitor engine - rate limit, queue length limit, independent deadband, trigger from an alternate channel • JAVA client • Multipriority client connections to the server • Export transaction semantics to the client • Client conversions in the client • Special server library for exporting C variables (no database needed) • Pseudo channels to make server statistics available • Hooks to log all writes (specified in access control) • C++ API for client - review interface to CDEV as part of design • Review portable server doc’s
Channel Access Modifications - V4 • Compress the protocol - header, data, alignment • Multi-dimensional array support • User defined containers exported to the client API • User defined application types to the client API • User defined event types to the client API