Hi,
the problem I report here may be a real bug or simply the fact I did not find
the correct option in cegcc ...
It is related to structure packing that seems to be sometimes incompatible with
what WinCE API expects. See the example below :
=========================================================================================
typedef struct MSGQUEUEOPTIONS_OS { // from msgqueue.h
DWORD dwSize;
DWORD dwFlags;
DWORD dwMaxMessages;
DWORD cbMaxMessage;
BOOL bReadAccess;
} MSGQUEUEOPTIONS, FAR *LPMSGQUEUEOPTIONS, *PMSGQUEUEOPTIONS;
static MSGQUEUEOPTIONS opt;
int sc_msg_init (ClientData cd, Tcl_Interp * ti, int argc, const char ** argv) {
opt.dwSize = sizeof(MSGQUEUEOPTIONS);
opt.dwFlags = MSGQUEUE_NOPRECOMMIT;// |MSGQUEUE_ALLOW_BROKEN;
opt.dwMaxMessages = 0;
opt.cbMaxMessage = 1024;
opt.bReadAccess = FALSE;
hw = CreateMsgQueue( (LPCWSTR) "scid2toga", &opt );
if ( ! hw )
return errorResult (ti, "CreateMsgQueue w failed");
opt.bReadAccess = TRUE;
hr = CreateMsgQueue( (LPCWSTR) "toga2scid", &opt );
if ( ! hr )
return errorResult (ti, "CreateMsgQueue r failed");
return TCL_OK;
}
=======================================================================================
It works perfectly well and I can use message queues for IPC between a chess
engine and the user interface.
But if the variable "opt" is on the stack, that is defined as a local variable
in function sc_msg_init, then sometimes, depending of the directory installation
of my application, the message queue took the wrong "opt.bReadAccess" parameter,
that is opened a queue "read-only" instead of "write-only" or the opposite. So I
concluded that I have a problem in the way structures are packed using cegccc,
problem that seems to disappear when using a global variable.
I tried to play with "-mstructure-size-boundary" option without success, and I
found no other option in cegcc that could solve this problem (and no real clue
in evc4 documentation).
So *maybe* is there a bug here ? Or something I did not understand ?
Pascal
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Cegcc-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/cegcc-devel