EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  <20092010  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  2007  2008  <20092010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: RE: Prosilica cameras and bug in EPICS signal handlers
From: "Mark Rivers" <[email protected]>
To: "Jeff Hill" <[email protected]>, "Andrew Johnson" <[email protected]>, <[email protected]>
Cc: [email protected], [email protected]
Date: Thu, 19 Mar 2009 12:16:17 -0500
Jeff and Andrew,

As I mentioned in this March 11 post, I ran into a problem recently
where a vendor's driver library was using the new Posix 1.b timer
routines.  Those routines generate SIGALARM signals, and can cause many
system calls to terminate prematurely with the errno=EINTR.  

Andrew and I fixed the Posix implementation of epicsThreadSleep to be
compatible with this.

What I forgot to mention in that earlier post is that the IOC that uses
that vendor's driver produces the following messages from Channel
Access.

CAS: UDP recv error (errno=Interrupted system call)
CAS: UDP recv error (errno=Interrupted system call)
CAS: UDP recv error (errno=Interrupted system call)
CAS: UDP recv error (errno=Interrupted system call)

Is this just a warning message that should be removed, because
interrupted system calls should now be considered "normal"?  Or is it
more serious?

Are there other places in Channel Access or other parts of EPICS where
we need to make changes to correctly handle interrupted system calls?
What about epicsEventWaitWithTimeout(), etc.?

Mark


-----Original Message-----
From: Mark Rivers 
Sent: Wednesday, March 11, 2009 5:25 PM
To: 'John M. Skinner'
Cc: 'Robert Sweet'; '[email protected]';
[email protected]
Subject: Prosilica cameras and bug in EPICS signal handlers

Dear John,

I know it's too late for your new camera purchase, but I want to let you
know that I did get the Prosilica cameras working fine with Linux today.


It turns out that it was really a bug in EPICS, not in their driver.
EPICS was installing signal handlers in an obsolete manner that is
incompatible with the new Posix 1.b interval timer library.

With a minor change to the EPICS signal handler functions I can control
Prosilica cameras from Linux with no problem.

EPICS needs additional work to be compatible with the Posix 1.b timer
routines.  These can cause many system calls to terminate prematurely
with the errno=EINTR.  I had to modify the epicsThreadSleep function to
work properly when Posix timers were running, and there will almost
certainly be other places where system calls need to be checked error
returns for this reason.  It's a lot of work, but other developers are
beginning to use these timer functions in their code, and we need to be
able to use code in EPICS.

Cheers,
Mark



References:
Prosilica cameras and bug in EPICS signal handlers Mark Rivers

Navigate by Date:
Prev: Re: RTEMS-mvme5500 BSP update Kate Feng
Next: Re: Alarm Limits Benjamin Franksen
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  <20092010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Prosilica cameras and bug in EPICS signal handlers Mark Rivers
Next: RE: Inter-IOC link problems Shepherd, EL (Emma)
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  <20092010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 31 Jan 2014 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·