From Ronald Aigner :
- client makes an UTCB IPC to manager. Manager does an
l4rm_area_reserve, creates a rcv_fpage, creates worker and sends back worker thread id to client. 2. client allocates memory and associated flexpage and sends it to server. 3. UTCB IPC is sent to worker with 3 parameters :
- on client side : utcb->values=0xbff00200: arg1=0x2 arg2=0x1 arg3=0x6
- on server side : utcb->values=0xbff00200: arg1=0x241401 arg2=0x0
arg3=0x7069776c
This should not happend, because sending a flexpage with UTCB is currently not supported by Fiasco. Can you post the signature of this method, so I can debug the code generation?
Yes, step 2 is not a UTCB IPC. However 1 and 3 are UTCB IPC. What do you mean signature ? The full idl file and generated ones ?
As there is no problem for first IPC (utcb->values is also 0xbff00200), is there any potential problem with flexpage ?
UTCB values stays the same. It depends on the generated stub whether UTCB IPC is actually used or not. Sending a flexpage, usually disqualifies the usage of UTCB IPC.
Do you mean, once a flexpage is sent no UTCB IPC should be sent after ?
BTW: Using the same CORBA_Environment for different threads will have the effect that a wrong UTCB is used. The generated stub will access the UTCB stored in the environment. The actual IPC will use the UTCB of the thread sending the IPC. It is therefore important to initialize the environment in the thread that is using it.
On client side, there is only one thread. One different CORBA_Environment is used for each call. On server side, One CORBA_Server_Environment different is used for manager and worker.
As utcb->values is still the same, what happens if several threads try to make UTCB IPC ?
A UTCB is unique for each L4 thread, i.e., each thread has it's own UTCB.
So why is it the same value (0xbff00200) for manager and worker ?
It seems that .rm .sem and .main are added by l4env, but I didn't find where.
If you are linking with liblogserver.a you should have a log server running.
Yes
These suffixes are registered at names (and the kernel debugger) to ease debugging. rm: l4/pkg/l4env/lib/src/startup.c: 316 main: l4/pkg/l4env/lib/src/startup.c: 322
These lines doesn't match my startup.c. I use r315 of public repository.
I updated last version of uclibc. It seems that bcmp, bcopy and bzero disapeared, isn't it ? I cannot link my applications : /home/chaland/l4/build-tudos-ia32/lib/x86_586/libuc_c.a(tzset.o): In function `tzset': /home/chaland/l4/build-tudos-ia32/pkg/uclibc/lib/uclibc/ARCH-all/libc/misc/time/time.c:1876: undefined reference to `time' Any idea to solve this ?
Regards Marc