On 8/7/22 13:49, Mooney, Tim M. via Tech-talk wrote:
Hi Andrew,
I see how this is confusing. A record has completed its processing (including the second pass of asynchronous processing) when it executes its forward link, and this is the sense of "complete" intended by section 5.9.
But a forward link is just a function call,
Specifically recGblFwdLink()
eg. in the case of stringinRecord which imo. is one of the simplest
record process() functions to understand. This is where device
support read/write functions are called.
https://github.com/epics-base/epics-base/blob/424d678abff19887cd2fa9ff5af82e33806a3712/modules/database/src/std/rec/stringinRecord.c#L146
Also, my example/discussion of the async device support "protocol".
http://mdavidsaver.github.io/epics-doc/epics-devsup.html#_asynchronous_example
and a record cannot be entirely done until that call returns. It won't return until the records downstream have executed their forward links.
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:* Sunday, August 7, 2022 2:12 PM
*To:* EPICS tech-talk <tech-talk at aps.anl.gov>
*Subject:* Asynchronous record processing confusion
Hi all,
I have another question, but this time it is about Chapter 5 in the Application Developer's Guide regarding asynchronous record processing. In Section 5.9, it states that the asynchronous completion routine performs the following algorithm.
1. Record processing continues
2. Record specific alarm conditions are checked
3. Monitors are raised
4. Forward links are processed
5. PACT is set FALSE.
For step 4, suppose the record is forward-linked to another asynchronous record. Section 5.9.1 and Section 5.9.3 seem to imply that the forward-linked record will be processed after the initial record has completed its processing, particularly from this statement (Forward and output links are triggered only when the asynchronous completion routine completes record processing).
However, in the discussion from Section 5.7, record A doesn't complete processing until all the subsequent records that are forward-linked to A have completed their processing.
I feel like I am missing something, because the understanding I get from the two sections appear to run counter to each other, unless it is because synchronous and asynchronous processing are in fact different from each other and do not share a lot of similarities. However, if the forward-linked records in step 4 need to complete their processing before moving onto Step 5, then it makes more sense.
Again, I really appreciate the time this community takes out of its day to help elucidate these questions I have.
Thanks,
Andy
- References:
- Asynchronous record processing confusion Wang, Andrew via Tech-talk
- Re: Asynchronous record processing confusion Mooney, Tim M. via Tech-talk
- Navigate by Date:
- Prev:
Re: Asynchronous record processing confusion Mooney, Tim M. via Tech-talk
- Next:
labCA 3.7.2 building failed Jong Woo Kim via Tech-talk
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
<2022>
2023
2024
- Navigate by Thread:
- Prev:
Re: Asynchronous record processing confusion Mooney, Tim M. via Tech-talk
- Next:
labCA 3.7.2 building failed Jong Woo Kim via Tech-talk
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
<2022>
2023
2024
|