EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  <20162017  2018  2019  2020  2021  2022  2023  2024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  <20162017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Erratum: Lock/Mutex to prevent "caget" from cutting in between updating multiple fields
From: Ralph Lange <[email protected]>
To: EPICS Tech-Talk <[email protected]>
Date: Mon, 2 May 2016 08:54:03 +0200
I got one important thing wrong.

On 01/05/2016 10:57, Ralph Lange wrote:
On 01/05/2016 09:55, Zhang, Dehong wrote:
3. does the CA server have its own buffers for each field/broadcasts?  Or it shares the same

    memory locations with the records?


    Here the answer seems to be "yes" for scaler fields, BUT "no" for string or array fields


Correct.
Scalar fields are put in the per-client-queue as values, arrays and strings are put in the queue as pointers.

    does this mean that there is NO guarantee that string/array fields will have the correct

    time stamps?


Correct.
In the congestion case, i.e. when the array data in the record gets updated before an older event is posted, the CA server will send an update to the client that combines the old time stamp (taken from the queue) with the newer data (taken from the record).

That last statement is wrong.
The reference in the queue entry is pointing to the record, not to the data.
The timestamp and data parts of a single update sent to the client are always matching and consistent.

However, when there are multiple updates for the same array-type value in a client's queue, the same timestamp/data (taken from the record) will be sent to the client multiple times. This can happen when an I/O Interrupt scanned waveform record gets a burst of scans.

Thanks to Michael Davidsaver for pointing this out, and sorry for not doing proper fact-checking in the first place.

Cheers,
~Ralph


References:
Lock/Mutex to prevent "caget" from cutting in between updating multiple fields Zhang, Dehong
RE: Lock/Mutex to prevent "caget" from cutting in between updating multiple fields Mooney, Tim M.
Re: Lock/Mutex to prevent "caget" from cutting in between updating multiple fields Till Straumann
Re: Lock/Mutex to prevent "caget" from cutting in between updating multiple fields Zhang, Dehong
Re: Lock/Mutex to prevent "caget" from cutting in between updating multiple fields Ralph Lange

Navigate by Date:
Prev: RE: Lock/Mutex to prevent "caget" from cutting in between updating multiple fields Mark Rivers
Next: Re: EPICS 2016 Spring Meeting at ESS, Lund, Sweden Torsten Bögershausen
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  <20162017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: RE: Lock/Mutex to prevent "caget" from cutting in between updating multiple fields Mark Rivers
Next: Re: Lock/Mutex to prevent "caget" from cutting in between updating multiple fields Michael Davidsaver
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  <20162017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 15 Jul 2016 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·