Segfaults while calling Rpc_methods from client.h

Norman Feske norman.feske at ...1...
Tue May 12 10:20:15 CEST 2015


Hi Aditya,

the manual refers to various communication techniques in the description
of the individual session interfaces in Section 4.5. In my opinion,
those session interfaces are best examples.

> What I did:
> Server:
> Ram_dataspace_capability ds = env()->ram_session()->alloc(SIZE);
> void* arg = env()->rm_session()->attach(ds);

BTW, there is a convenience helper for performing this sequence (and the
reverse) at os/include/os/attached_ram_dataspace.h.

> I returned this ds through a getDataspace() RPC method on the server
> side to the invoking client.
> I'm able to effectively write bulk data between components. Thank you
> for directing me toward this.
> 
> I have a couple of spinoff questions though. 
> 1. Initially I tried creating a Ram_connection ram1 and allocated as in
> the ds_ownership program
> 
> ram1.ref_account(env()->ram_session->cap());
> env()->ram_session()->transfer_quota(ram1.cap(), 8*1024); 
> 
> Then Ram_dataspace_capability ds = ram1.alloc(SIZE); and attached ds to
> RM session and sent back ds.
> But the client threw a C++ IPC error and called abort(). 

The general steps look good to me. If you shared you experiment as a
branch at GitHub I could have a look, where the problem lies.

> A) Is this because ram1 was local to the server?

No.

> B) Is the transfer quota mechanism is similar to the transfer_quota from
> the client during the creation of a session
> in the constructor?

It is related but actually not very similar. Please have a look at
Section 3.3 for a description. In short, the session quota is meant to
be consumed by the respective server. The RAM server is like a bank
where each RAM session corresponds to a bank account. The quota
transferred to a RAM session is the balance on the account.

> 2. I'm still trying to get my head around the concept of a capability. I
> tried going through the definition of a capability
> in base/capability.h, but I seemed to get nowhere. What can a user do
> with a capability - mechanisms such as 
> attach and detach with the help of a capability etc.

May I refer you to Chapter 3 of the manual?

> I'm sure you've had similar questions asked before. Thank you taking the
> time to respond.

You are welcome.

Cheers
Norman

-- 
Dr.-Ing. Norman Feske
Genode Labs

http://www.genode-labs.com · http://genode.org

Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth




More information about the users mailing list