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