Add real-time capable API to CA client

Bug #1495843 reported by Ralph Lange
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Ralph Lange

Bug Description

One of the common methods to communicate between a C/C++ application and an EPICS system for supervisory control and monitoring is by using Channel Access to access EPICS records (on the same box or remote).

When trying to send CA updates from a real-time thread it becomes obvious that even the "fire and forget" CA put operation may allocate memory, leading (on a Linux controller) to execution times of that non-blocking call of possibly over 1ms, which is likely to be unacceptable for a real-time setup.

Is there a way to split the CA put call into two parts, a "reservation" part that may malloc() and an "execution" part that is guaranteed to not allocate and has a deterministic timing?!

On top of that, the existing call could be implemented as calling the reservation immediately followed by execution.
A real-time thread, on the other hand, would do the reservation(s) in the non-critical "free" time at the end of the cycle and could do deterministic CA puts using the reservations during the real-time phase of the following cycle.

Changed in epics-base:
assignee: nobody → Ralph Lange (ralph-lange)
importance: Undecided → Wishlist
status: New → In Progress
Revision history for this message
Ralph Lange (ralph-lange) wrote :

In progress? Nope, sorry.

Changed in epics-base:
status: In Progress → New
Revision history for this message
mdavidsaver (mdavidsaver) wrote :

I'd like to reserve 'New' for newly created issues, in no in progress lets say "Triaged" then.

Changed in epics-base:
status: New → Triaged
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.