Server badges in Core

Steffen Liebergeld steffen at ...37...
Mon May 17 11:54:37 CEST 2010


Hello friendly Genode-people,

I am having difficulties unterstanding the handling of the server badge
(currently in core only)

As far as I understand, the badge identifies the receipient-object.
Therefore the sender encodes the address of the receiving object's
capability in the first slot of the send buffer.

On the receiver side, in Server_activation_base::entry(), the badge is
used to identify the correct object, whose dispatch() Method is then called.

The server however has to insert the capability into the Object_pool
first, which is done at Server_entrypoint::manage().

Now I am currently having problems in core's main function. During
Ram_session_client(init_ram_session_cap).ref_account(env()->ram_session-cap()),
an IPC call is sent to the "activation"-Thread, during which an invalid
badge is used. Consequently the activation thread does not find the
corresponding object and returns ERR_INVALID_OBJECT.

This raises the following questions: a) Which object is the correct
handler for this call, and b) where is the capability of the receiver
allocated and registered at the Object_pool?

I am looking forward to hearing from you.

Many thanks in advance.

Greetings,
Steffen
-- 
Dipl.-Inf. Steffen Liebergeld <steffen at ...37...>
Security in Telecommunications
TU Berlin/ Deutsche Telekom Laboratories
Ernst-Reuter-Platz 7, 10587 Berlin
Phone: +30 8353 58 263
Web: http://www.t-labs.tu-berlin.de/sect




More information about the users mailing list