Back to UTCB IPC

Marc CHALAND l4 at
Thu Mar 6 12:37:37 CET 2008

>From Ronald Aigner :
> > 1. 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.


> 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':
undefined reference to `time'
Any idea to solve this ?


More information about the l4-hackers mailing list