EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  <20072008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  <20072008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: fanout processing and timed-out records
From: Andrew Johnson <[email protected]>
To: Emmanuel Mayssat <[email protected]>
Cc: TECHTALK <[email protected]>
Date: Mon, 19 Nov 2007 10:00:10 -0600
Emmanuel Mayssat wrote:

I have noticed something strange with the fanout record (selective processing record). My fanout has for input 6 asynchronous records.

The fanout record type doesn't have any input links, and the dfanout record type only has one â did you mean to ask about the sequence record type (seq)?


If one of the record timeout, the fanout stops processing any further.
So if one of the first records times out, the following ones aren't
processed at all.

This is the relevant code from the process() routine in fanoutRecord.c, which has not changed since Version 3.14.2:


    switch (pfanout->selm){
    case (fanoutSELM_All):
        plink=&(pfanout->lnk1);
        state=pfanout->seln;
        for ( i=0; i<6; i++, state>>=1, plink++) {
            if(plink->type!=CONSTANT) dbScanFwdLink(plink);
        }
        break;

When SELM="All" there are no conditions, it always runs through all six forward links and scans them all (the link type will never be CONSTANT if you have connected that link to another record). Looking at it the 'state' variable is not actually needed at all, but doesn't affect what the record does at all, which is to process all its forward links.

Now if you have a fanout of fanout records, you may end-up only having a
few record triggered.

Has anybody seen this ?
Is there a way to force the fanout to process all of its INP records?
Is there another reliable way to do selective processing?

- Andrew -- When a distinguished but elderly scientist states that something is possible, he is almost certainly right. When he states that something is impossible, he is very probably wrong. -- Arthur C. Clarke

References:
fanout processing and timed-out records Emmanuel Mayssat

Navigate by Date:
Prev: Problem with assert in dbLock.c David Dudley
Next: 2007 EPICS Meeting (Knoxville) Presentations Kay-Uwe Kasemir
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  <20072008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: fanout processing and timed-out records Emmanuel Mayssat
Next: question about caTCL_20070625 marco_hair
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  <20072008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 10 Nov 2011 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·