EPICS Home

Experimental Physics and Industrial Control System


 
2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  <20172018  2019  2020  2021  2022  2023  2024  Index 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  <20172018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: iocShutdown() hooks
From: Andrew Johnson <[email protected]>
To: Michael Davidsaver <[email protected]>
Cc: EPICS core-talk <[email protected]>
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  <20172018  2019  2020  2021  2022  2023  2024 
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  <20172018  2019  2020  2021  2022  2023  2024