Subject: |
Re: When does a link process its target record? |
From: |
"Redman, Russell O." <[email protected]> |
To: |
"Tech-Talk (E-mail)" <[email protected]> |
Date: |
Fri, 1 Nov 2002 10:38:21 -0800 |
My thanks to Ned Arnold, Jim Thomas, Andrew Johnson and Benjamin Franksen
for their very helpful answers. [And I apologise for not having put a
subject line on my message, which is going to make this thread hard to
follow in the archive. I borrowed this subject line from Ben, since it
seemed the most appropriate.]
As Ned says, things were apparently behaving as designed. However, I still
regard the discussion of CA links in the Record Reference Manual in sections
1.3 and 2.2 to be incorrect. Recall that section 1.3 says
Channel Access links, be they between records located in
different IOCs or between records located in the same IOC,
cannot be process passive, e.g., they cannot cause the
record they specify to process when written to or read from.
This is false as written. You cannot specify PP in the link, but (borrowing
some words from Ned) the real condition should have been written as:
Channel Access links, be they between records located in
different IOCs or between records located in the same IOC,
cannot be process passive, e.g., the link itself cannot be
configured to cause the target record to process when
written to or read from. Note, however, that a Channel Access
output link will cause the target record to process if the
destination field is defined as "PP" (with the statement
"pp(TRUE)" in the *.dbd file and so documented under the
PP column in the record reference manual) and the record
scan field is set to "Passive". If these two conditions are
true, the record will process when ANY channel access
client (including a sequence programs, CA links, etc) writes
to that field."
Section 2.2 should be modified similarly.
Although the SNL manual is pretty good, I think it could be improved
significantly by adding similar text to the discussion of pvPut and pvGet.
Processing records in the database is such a fundamental part of EPICS that
I strongly believe that the effects of pvPut and pvGet should be made
explicit. May I suggest that the pvGet discussion be amended to include the
text:
Like any other Channel Access input operation that uses ca_get,
calling pvGet does not cause the assigned record to process,
and therefore always fetches the current value of the assigned field.
Similarly, the pvPut discussion might be amended by including the text:
Like any other Channel Access output operation that uses ca_put,
calling pvPut will cause the record containing the assigned field
to process if and only if the destination field is defined as "PP"
(with the statement "pp(TRUE)" in the *.dbd file and so documented
under the PP column in the record reference manual) and the
record scan field is set to "Passive".
It might also be worth stating explicitly whether pvPutComplete waits for
the record to finish processing, or just for the put operation to complete
(I am guessing the latter).
Cheers,
Russell O. Redman
- Replies:
- Re: When does a link process its target record? Benjamin Franksen
- Navigate by Date:
- Prev:
Re: When does a link process its target record? Benjamin Franksen
- Next:
Re: When does a link process its target record? Ned Arnold
- 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: Your Message Sent on Thu, 31 Oct 2002 12:25:33 -0800 Andrew Johnson
- Next:
Re: When does a link process its target record? Benjamin Franksen
- 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
|