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.
- 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.
- 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