New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
waveformRecord missing PACT=true? #187
Comments
The line that set PACT in the waveformRecord.c's Every operation that involves a DB link which might cause a different record to process should be saving PACT and setting it to TRUE before it passes control to that other record. This rule exists because records are allowed to do I/O through links before they call the device support when PACT would still be FALSE. I'm not aware of any other ways in which control can be passed to a different record which might end up looping back to the waveform, but I'd be interested to hear if there are any. If the I/O was asynchronous then PACT will still be true anyway, so that case is safe. If the I/O was synchronous, the routines that would get called with PACT incorrectly FALSE are
Did I miss anything? |
The call to I happened to notice this omission while giving an introduction to record support, just after pointing out how error prone this almost copy+paste code can be. This omission provided an opportune illustration. |
Sorry I missed that call to |
epics-base/modules/database/src/std/rec/waveformRecord.c
Lines 139 to 143 in 967846b
Is waveformRecord missing a
prec->pact = TRUE;
before line 142?aaiRecord
has one.epics-base/modules/database/src/std/rec/aaiRecord.c
Lines 169 to 174 in 967846b
The text was updated successfully, but these errors were encountered: