g+
g+ Communities
Argonne National Laboratory

Experimental Physics and
Industrial Control System

2002  2003  2004  2005  2006  2007  2008  <20092010  2011  2012  2013  2014  Index 2002  2003  2004  2005  2006  2007  2008  <20092010  2011  2012  2013  2014 
<== Date ==> <== Thread ==>

Subject: Re: Local CA out links broken during PINI
From: Ralph Lange <Ralph.Lange@bessy.de>
To: Jeff Hill <johill@lanl.gov>, "'Andrew Johnson'" <anj@aps.anl.gov>
Cc: EPICS Core Talk <core-talk@aps.anl.gov>
Date: Wed, 18 Feb 2009 13:56:57 +0100
This sounds like a fix could be feasible and/or an issue on Andrew's list, doesn't it?

Ralph


On 17.02.2009 21:30 Jeff Hill wrote:
FWIW: The CA client does not connect via TCP through the CA server when it’s a local channel, and instead the db_xxxx functions are called directly. A local channel is one that is hosted within the same IOC as the client library context. Therefore, at least rsrv_init and rsrv_run need not complete prior to connecting a local channel. As Andrew mentioned, the dbCa facility would definitely need to be running first, however.

Jeff

-----Original Message-----
From: tech-talk-bounces@aps.anl.gov [mailto:tech-talk-bounces@aps.anl.gov]
On Behalf Of Andrew Johnson
Sent: Monday, February 16, 2009 9:37 AM
To: tech-talk@aps.anl.gov; benjamin.franksen@bessy.de
Subject: Re: Local CA out links broken during PINI

Hi Ben,

On Monday 16 February 2009 05:07:12 Benjamin Franksen wrote:
it seems that CA output links do not work at all during PINI processing
if
the target record is on the same IOC.
I think this is a bug, as I could not find any note on this behaviour in
the Developer's Guide.
Please consider the task of bringing up an IOC, i.e. what iocInit does.
Here
are some lines from iocInit, in order of execution:

    initialProcess();

    /* Start CA server threads */
    rsrv_init();
...
   /* Enable scan tasks and some driver support functions.  */
    scanRun();
    dbCaRun();
...
    rsrv_run();

The CA server has not even been initialized when the initialProcess() (i.e.
PINI processing) takes place, and the dbCa link task which manages CA links
is not running at that point either.  PINI has to happen before we release
the scan threads or allow CA links to connect because they can initiate
record processing.

We can't allow external CA clients to connect before the PINI processing is
done because they might interfere with that initialization, and I suspect
it
would be hard to add a separate path to the server to allow internal CA
clients to connect in advance of the external ones.

I agree that the documentation does not discuss PINI much, but [despite
being
slightly out-dated by R3.14.10] section 7.4 of the AppDevGuide does make
clear that initialProcess() happens before rsrv_init().

- Andrew
--
The best FOSS code is written to be read by other humans -- Harold Welte







Replies:
Re: Local CA out links broken during PINI Andrew Johnson

Navigate by Date:
Prev: Re: Ideas for Codeathon Schoeneburg, Bernd
Next: Re: Local CA out links broken during PINI Andrew Johnson
Index: 2002  2003  2004  2005  2006  2007  2008  <20092010  2011  2012  2013  2014 
Navigate by Thread:
Prev: Re: Ideas for Codeathon Marty Kraimer
Next: Re: Local CA out links broken during PINI Andrew Johnson
Index: 2002  2003  2004  2005  2006  2007  2008  <20092010  2011  2012  2013  2014 
ANJ, 02 Feb 2012 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· EPICSv4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·