EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  <19951996  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  Index 1994  <19951996  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 
<== Date ==> <== Thread ==>

Subject: Re: CA completion question
From: [email protected] (Jeff Hill)
To: [email protected]
Cc: [email protected], [email protected]
Date: Thu, 3 Aug 95 15:47:48 MDT
William,

> If I do a PV put to a channel which I am monitoring (and the new value is
> different enough from the old one to trigger a monitor) are there any
> guarantees as to whether the monitor will come before or after the put
> completion message? I have observed that it does but is that chance
> or design?

Note that in the sequencer the synchronous pvPut() has likely
been implemented with ca_put() and not with ca_put_callback()
because put call back has only recently been added to EPICS 
(Andy could you confirm this?).

If the sequencer is using ca_put() then synchronous pvPut() isnt
waiting until the put completes. Instead it is only waiting for the
put request to be handed off to TCP/IP. No doubt that the sequencer
should be modified to use ca sync group put/get (implemented on top
of the ca put/get call back primitives) when it is a synchronous 
pvPut()/pvGet(). Do you agree Andy?

The way it is now it is likely (but not guaranteed) that the
monitor call back will occur before the put call back is called.
This is because in record support calls are made to post CA events 
prior to completion of record processing. I should change the
way put call back is implemented so this is deterministic.


> 
> (The context is that I have a sequence which looks like:
> 
>     state idle {
>         when ( sara ) {
>             printf( "idle: sara is true (%d)\n", sara );
>             sara = 0;
>             pvPut( sara );
>         } state idle
>     }
> 
> and I want to be sure - I am using synchronous puts - that there will be
> only a single printf() each time I set sara to a non-zero value. We want
> to use logic such as this for processing external commands and don't want
> to have to use multiple states, although we could.)
> 


Jeff


Navigate by Date:
Prev: CA server message buffers Peregrine McGehee
Next: Re: CA server message buffers Jeff Hill
Index: 1994  <19951996  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: CA server message buffers Peregrine McGehee
Next: Re: CA server message buffers Jeff Hill
Index: 1994  <19951996  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 
ANJ, 10 Aug 2010 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·