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  2016  <2017 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
<== Date ==> <== Thread ==>

Subject: RE: ca_search() and "preemptive callback"
From: "Mooney, Tim M." <mooney@aps.anl.gov>
To: Michael Westfall <mwestfal@gemini.edu>, "Johnson, Andrew N." <anj@aps.anl.gov>
Cc: "tech-talk@aps.anl.gov Talk" <tech-talk@aps.anl.gov>
Date: Thu, 5 Jan 2017 20:46:39 +0000
I don't know what's wrong, but there is a working example of ca_context_create(ca_enable_preemptive_callback) in autosave's save_restore.c.  It's done in a spawned thread, and not called from within SEVCHK(), but otherwise it looks just like your code.

Tim Mooney (mooney@aps.anl.gov) (630)252-5417
Beamline Controls Group (www.aps.anl.gov)
Advanced Photon Source, Argonne National Lab


From: tech-talk-bounces@aps.anl.gov [tech-talk-bounces@aps.anl.gov] on behalf of Michael Westfall [mwestfal@gemini.edu]
Sent: Thursday, January 05, 2017 1:11 PM
To: Johnson, Andrew N.
Cc: tech-talk@aps.anl.gov Talk
Subject: Re: ca_search() and "preemptive callback"

It's in the main thread in a function that's called from the startup script after iocinit().

As far as I can tell, the purpose is to get channel IDs of some local database channels in order to get and put values to them.

I don't doubt that there is a different and better way to do this now-a-days... And maybe there was way back when this was originally implemented too. Who knows why things were done the way they were back in the primordial days..


On Thu, Jan 5, 2017 at 3:53 PM, Andrew Johnson <anj@aps.anl.gov> wrote:
Hi Mike,

On 01/05/2017 12:33 PM, Michael Westfall wrote:
> We are converting our legacy systems from EPICS 3.13/vxWorks to EPICS
> 3.14/RTEMS,
>
> I have an IOC that calls
> *SEVCHK( ca_search(buf, &id), "ca_search failed\n");*

Where is this code? What thread is going to execute it?

I suspect you're going to have to rewrite some of that subsystem, but
we'll need rather more information about what it's trying to do to be
able to give you much help.

- Andrew

> but it results in the following error:
> *dbContext: preemptive callback required for direct in
> memory interfacing of CA channels to the DB.
> CA.Client.Exception...............................................
>     Warning: "Not supported by attached service"
>     Context: "ca_search failed
> "
>     Source File: ../caLogDataDriver.c line 119
>     Current Time: Thu Jan 05 2017 18:02:41.367850828*
>
> OK, so I insert this first:
> *SEVCHK(ca_context_create(ca_enable_preemptive_callback),
> "caInitLogSetup() calling ca_context_create()");*
>
> But now I get this
> *CA.Client.Exception...............................................
>     Error: "Preemptive callback not enabled - additional threads may not
> join context"
>     Context: "caInitLogSetup() calling ca_context_create()"
>     Source File: ../caLogDataDriver.c line 106
>     Current Time: Thu Jan 05 2017 17:41:58.248806684
>
> *
> *
> *
> What am I missing? Do I need to supply a callback function first? The
> Channel Access documentation seems a bit sparse in this regard...
>
> --
> Mike Westfall
> Control Systems Software Engineer
>
>

--
Arguing for surveillance because you have nothing to hide is no
different than making the claim, "I don't care about freedom of
speech because I have nothing to say." -- Edward Snowdon



--
Mike Westfall
Control Systems Software Engineer



References:
ca_search() and "preemptive callback" Michael Westfall
Re: ca_search() and "preemptive callback" Andrew Johnson
Re: ca_search() and "preemptive callback" Michael Westfall

Navigate by Date:
Prev: Re: ca_search() and "preemptive callback" Michael Westfall
Next: Re: multiple include not supprted with EPICS 3.15.2 haquin
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
Navigate by Thread:
Prev: Re: ca_search() and "preemptive callback" Michael Westfall
Next: softGlueZynq R1-0 release Mooney, Tim M.
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
ANJ, 14 Feb 2017 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·