Argonne National Laboratory

Experimental Physics and
Industrial Control System

2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  <2017 Index 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  <2017
<== Date ==> <== Thread ==>

Subject: Re: iocShutdown() hooks
From: Andrew Johnson <anj@aps.anl.gov>
To: Michael Davidsaver <mdavidsaver@gmail.com>
Cc: EPICS core-talk <core-talk@aps.anl.gov>
Date: Wed, 31 May 2017 13:22:21 -0500
Hi Michael,

On 05/30/2017 07:54 PM, Michael Davidsaver wrote:
> On 05/30/2017 06:42 PM, Andrew Johnson wrote:
>> On 05/25/2017 09:06 AM, Michael Davidsaver wrote:
>>> My first though would be to use initHooks.h.  So I'd like to add
>>>
>>> * initHookAtShutdown  - at start of iocShutdown()

initHookAtIocShutdown please, to match other initHookAtIoc* names.

>>> * initHookAfterCloseLinks - after dbCaShutdown()

Ok.

>>> * initHookAtStopped - Just after iocShutdown() returns

A hook announced at the end of iocShutdown() should be named
initHookAfterIocStopped to match the others. If you want notification
that the process is exiting can't you register your own epicsAtExit()
handler? As long as you do so before initDatabase() your handler would
be run after exitDatabase() does.

> I'm going to add the (de) initHooks anyway as this is something would
> have been helpful to me before for driver work.

Ok. Don't forget to add the new state names to the array in
initHooks.c::initHookName().

> I don't see what you're getting at wrt. dbServer.  How would this be
> cleaner than an initHook?   Seems the same to me.  Were you thinking to
> pass in some additional arguments?

It has the same effect, but I usually regard initHooks as a way to let
applications run code at points where we don't provide a standard
extension API. The dbServer interface was intended to become a standard
extension point for servers, with methods for everywhere the IOC needs
to call up to the registered server layers. By adding init(), run() and
pause() methods to dbServer we should be able to compile iocInit.c
independently of rsrv, and hence plug in server layers at run-time.
There should be one or more close/shutdown methods too, but rsrv doesn't
have any, so qsrv could be a model for what's needed there.

>> Will QSRV support pausing? This was added for DESY's hot-standby work; I
>> don't see it as particularly important, but QSRV should probably display
>> a warning message when someone tries to use it if it's not supported.
> 
> No plans.  I hadn't considered this as I've never paused RSRV.

I'm going to guess it could be tricky to add, but might be worth at
least thinking about what's needed. I don't think DESY are the only site
using the redundancy stuff.

- Andrew

-- 
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

References:
iocShutdown() hooks Michael Davidsaver
Re: iocShutdown() hooks Andrew Johnson
Re: iocShutdown() hooks Michael Davidsaver

Navigate by Date:
Prev: Jenkins build is back to normal : epics-base-3.15-win64-test #114 APS Jenkins
Next: Re: iocShutdown() hooks Michael Davidsaver
Index: 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  <2017
Navigate by Thread:
Prev: Re: iocShutdown() hooks Michael Davidsaver
Next: Re: iocShutdown() hooks Michael Davidsaver
Index: 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  <2017
ANJ, 02 Jun 2017 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·