Now I working on i2c driver for i.mx53 platform. In i2c_session interface I using Rpc_in_buf for transfer data between driver and client:
virtual bool read(Genode::uint8_t address, Genode::uint8_t register,
Byte_array &out) = 0;
virtual bool write(Genode::uint8_t address, Genode::uint8_t register,
Byte_array const &in) = 0;
GENODE_RPC(Rpc_read, bool, read,
Genode::uint8_t, Genode::uint8_t, Byte_array &);
GENODE_RPC(Rpc_write, bool, write,
Genode::uint8_t, Genode::uint8_t, Byte_array const &);
Write function transfer data to driver normally, but after read rpc call on client side the buffer content does not change.