Hi,
I am working in ubuntu linux 8.04 version and using gcc compiler for
compiling my application.
I am using a function as below
uint8 Message(uint8 u8SignalID, tstControlMessageData
*pstControlMessageData)
{
tstControlMessage stControlMessage;
uint8* char_ptr;
uint8 iCount;
char temp_buffer[100] = {0};
for (iCount = 0; iCount < sizeof(tstControlMessageData); iCount++)
{
sprintf (temp_buffer, "pstCMData->au8Data[%d] = %d\n", iCount,
pstControlMessageData->au8Data[iCount]);
puts(temp_buffer);
memset(temp_buffer, 0, 100);
}
memset(&stControlMessage, 0, sizeof(tstControlMessage));
stControlMessage.u8SignalID = u8SignalID;
memcpy(stControlMessage.stControlMessageData.au8Data,
pstControlMessageData->au8Data, sizeof(tstControlMessageData));
iCount = 0;
char_ptr = &(stControlMessage);
while ((char_ptr != NULL) && (iCount <
sizeof(tstControlMessage))){
sprintf(temp_buffer, "stCM[%d] = %d\n", iCount,
*char_ptr);
puts(temp_buffer);
char_ptr++;
iCount++;
}
return Cas_IPC_u8SendInternalMessage(&stControlMessage);
}
The problem i am facing is while copying structure data members using
memcpy gets copied in the destination location shifted by one byte.
I am posting teh log also for u to look into
source
pstControlMessageData->au8Data[0] = 1
pstControlMessageData->au8Data[1] = 6
pstControlMessageData->au8Data[2] = 255
pstControlMessageData->au8Data[3] = 255
pstControlMessageData->au8Data[4] = 255
pstControlMessageData->au8Data[5] = 255
pstControlMessageData->au8Data[6] = 255
pstControlMessageData->au8Data[7] = 255
pstControlMessageData->au8Data[8] = 18
pstControlMessageData->au8Data[9] = 15
pstControlMessageData->au8Data[10] = 23
pstControlMessageData->au8Data[11] = 22
destination
stControlMessage.stControlMessageData.au8Data[0] = 21
stControlMessage.stControlMessageData.au8Data[1] = 1
stControlMessage.stControlMessageData.au8Data[2] = 6
stControlMessage.stControlMessageData.au8Data[3] = 255
stControlMessage.stControlMessageData.au8Data[4] = 255
stControlMessage.stControlMessageData.au8Data[5] = 255
stControlMessage.stControlMessageData.au8Data[6] = 255
stControlMessage.stControlMessageData.au8Data[7] = 255
stControlMessage.stControlMessageData.au8Data[8] = 255
stControlMessage.stControlMessageData.au8Data[9] = 18
stControlMessage.stControlMessageData.au8Data[10] = 15
stControlMessage.stControlMessageData.au8Data[11] = 23
Here as u see, the first byte pstControlMessageData->au8Data[0] in the
source holds value 1. But the data copied in destination is
stControlMessage.stControlMessageData.au8Data[0] = 21
I suspect some background manipulation happening in memcpy.
I am using ubuntu linux 8.04 distribution and gcc compiler
The application runs on 32 bit Fujitsu JADE processor
Can anybody throw light on this problem
- Navy
--
comp.lang.c.moderated - moderation address:
cl...@plethora.net -- you must
have an appropriate newsgroups line in your header for your mail to be seen,
or the newsgroup name in square brackets in the subject line. Sorry.