Experimental Physics and Industrial Control System
Subject: |
Bug in CA client VAX architecture conversion routines |
From: |
[email protected] (Jeff Hill) |
Date: |
Tue, 5 Jul 94 11:00:00 MDT |
Hello,
This message is directed to persons running EPICS on the VAX.
Chris Mayer ([email protected]) has discovered a bug in the
channel access client VAX architecture dependent data conversion
routines. The problem will show up if you are using one of types
dbr_short, dbr_enum, or dbr_long.
This is perhaps cryptic and confusing but ok:
for(i=0; i<num; i++){
*d++ = *s++;
}
However this wasnt:
for(i=0; i<num; i++){
*d++ = ntohs( *s++ );
}
The problem is that ntohs() is a macro and there is an
unexpected side effect where the ++ operator is executed twice
so we get one byte correctly and the other byte is garbage:
# define ntohs(SHORT)\
((unsigned short)(((short)(SHORT))<<8 | ((unsigned short)(SHORT))>>8 ))
I will apply this fix to 3 instances in convert.c for EPICS 3.12.
Jeff
______________________________________________________________________
Jeffrey O. Hill Internet [email protected]
LANL MS H820 Voice 505 665 1831
Los Alamos, NM USA 87545 FAX 505 665 5107
- Navigate by Date:
- Prev:
Solaris and EPICS mcgehee
- Next:
Need to use a board in various configurations. Bill Brown
- Index:
<1994>
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
Solaris and EPICS mcgehee
- Next:
Need to use a board in various configurations. Bill Brown
- Index:
<1994>
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024