Jeff,
Redefining the message_buffer struct in rsrv/server.h seems to work
fine. Thanks.
Your observations clarified why the UDP messages were "bad" and also
why, as you suspected, that protocol buffers were aligned on 4 byte boundaries.
Another point I need to bring up is on the Sparcs I am _not_
using gcc's -mforce-align gcc option which forces doubles to be 8-byte
aligned and to use double-word instructions to reference them.
This option had the effect of replacing one of the arguments (usually the
sixth one) in functions like taskSpawn and printf with what appeared to be
the stack pointer.
I'm still working through building a simple application but so far
have only run into two problems. The second (minor) one was:
Problem:
iocInit crashes with Memory Address Not Aligned.
File:
rsrv/rsrv_init.c
Cause:
In rsrv/rsrv_init.c the DELETE_TASK macro is called with the result
of the taskNameToID() vxWorks function call. If the task name is not
found, this returns a -1 (0xffffffff), which causes the error when
passed to errnoOfTaskGet().
Fix:
DELETE_TASK now checks for it's argument (TID) being ERROR (-1).
#define DELETE_TASK(TID)\
if(TID!=ERROR && errnoOfTaskGet(TID)!=ERROR)taskDelete(TID);
I'll send you a full report when I finish.
Aloha,
Peregrine
- References:
- Re: CA server message buffers Jeff Hill
- Navigate by Date:
- Prev:
UAE - the Universal Application Environment Nick Rees
- Next:
Re: ca question Jeff Hill
- 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:
Re: CA server message buffers Jeff Hill
- Next:
UAE - the Universal Application Environment Nick Rees
- 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
|