Hi Tim,
Thank you for the prompt response! Greatly appreciate your clarification about what indirect processing entails. Trying to understand the behind-the-scenes of linking so that my drivers
have as minimal issues as possible, so I apologize for my abundance of questions.
I guess my remaining question pertains to asynchronous chaining. If I have a SSEQ record, whose LNKn contains an asynchronous record "rec_1" that is forward-linked to another asynchronous record "rec_2". I could be wrong but does SSEQ only wait for "rec_1"
to complete processing without waiting for "rec_2" before moving onto the other LNKn/DLYn/DOLn groups? Section 5.9.3 of 5.
Database Locking, Scanning, And Processing (anl.gov) seems to imply that "rec_2" won't process until after "rec_1" has finished processing. Based upon the idea that "rec_1" has finished its processing, would SSEQ move on without waiting for "rec_2" to
finish its processing since "rec_1" is the target record?
Thanks,
Andy
From: Mooney, Tim M. <mooney at anl.gov>
Sent: Saturday, August 6, 2022 7:49 AM
To: EPICS tech-talk <tech-talk at aps.anl.gov>; Wang, Andrew <wang126 at llnl.gov>
Subject: Re: Question about "indirect processing" mentioned in documentation for the SSEQ
Hi Andrew,
By "indirect" I mean, for example, a record with a CPP link on a PV whose value changes as the result of the SSEQ record's processing. EPICS doesn't include that record's processing in its execution trace of SSEQ-record-driven processing.
It doesn't matter whether records that are included in an EPICS execution trace are synchronous or asynchronous, because EPICS uses a record's forward link to determine when that record is done, and asynchronous record processing doesn't execute the forward
link until the end of the second pass of asynchronous processing.
See slides 31 and following ("completion reporting") of this powerpoint presentation for an illustrated guide to the possibilities that can be involved in an execution trace:
Tim Mooney (mooney at anl.gov) (630)252-5417
Beamline Controls Group ( www.aps.anl.gov)
Advanced Photon Source, Argonne National Lab
From: Tech-talk <tech-talk-bounces at aps.anl.gov> on behalf of Wang, Andrew via Tech-talk <tech-talk at aps.anl.gov>
Sent: Saturday, August 6, 2022 12:59 AM
To: EPICS tech-talk <tech-talk at aps.anl.gov>
Subject: Question about "indirect processing" mentioned in documentation for the SSEQ
Hi all,
I have a quick question regarding this one sentence about WAIT in the SSEQ documentation. It states:
"Finally, if the sseq record
successfully waits for targetRecord to finish processing, it is still possible for other records to process as an indirect result
of LNKn, and the sseq record
cannot wait for this indirectly caused processing to finish unless the database developer has arranged for the indirectly caused processing to be traceable by EPICS."
Two questions I have.
- Suppose LNKn processes a record called "rec_1" through CA, "rec_1" is forward-linked to "rec_2", and "rec_2" is forward-linked to "rec_3". Does the statement about indirect processing apply in the case of "rec_1", "rec_2", and "rec_3" all being
synchronous records when WAITn is set to be "Wait".
- Using the same example, except with "rec_1", "rec_2", and "rec_3" all being asynchronous records (StreamDevice), would indirect processing apply to this case
when WAITn is set to be "Wait"? For instance, would SSEQ just wait for "rec_1"'s completion routine or "rec_3"'s completion routine?
Thank you very much,
Andy
|