Hi Mathias,
On Monday 19 September 2005 18:37, Mathias Krause wrote:
Here the server already deregisters itself at names because he got a message with an empty buffer => means "end of transmition".
| ... | +++> 26.00 recv dope=00004000 (OK) 27.00 (00000000,00000000) 3966 | ipc: 26.00 recv from 27.00 TO=INF 3965 | ...
Here the server starts waiting for the client to send data in a buffer sized 4k.
4k direct IPC or indirect IPC? What message 27.00 send to 26.00 (events before 3965)? It seems that 27.00 did only send a short message containing two dwords.
Maybe the compiler optimizes some code away. I assume that you tried the last version of L4Linux 2.6 -- Adam changed many things to get hybrid tasks working.
It's a version a week old or so. It was very stable at this time (no changes in CVS for some time).
Ok, right.
We cannot guarantee that the bindings are bug-free but they have been tested for a long time. Do you use any special compiler switches besides -O2? Do you use -fomit-frame-pointer? Try without. Do you use -fstrict- aliasing? Try with -fno-strict-aliasing as defined in l4/mk/binary.inc.
My CFLAGS are '-W -Wall -g -O2', so this should be ok, doesn't it?
You should also add -fno-strict-aliasing. See the appropriate documentation of that option. I assume that you use DICE, and with DICE you _must_ use this option so far (Ron is about to change the whole DICE compiler but that takes much time).
BTW, I haven't found any library containing a l4_ipc_whatever() function. Are the assembler inlines the only way to make ipc calls?
Yes. Therefore, L4 sources should not be compiled using -O0 or -fno-inline. Hmm, until now we did not need to compile with -O0.
Frank