Hello Nikolay, you ran into the same issue as Pruthivi Raj
http://sourceforge.net/mailarchive/message.php?msg_id=28616670 twelve month ago. On Wed, Dec 19, 2012 at 02:50:50PM +0400, Nikolay Golikov wrote: > enum { MAX_BUFFER_SIZE = 256 }; > typedef Genode::Rpc_in_buffer<MAX_BUFFER_SIZE> Byte_array; Rpc_in_buffer can only be used for _input_ parameters of RPC functions. > virtual bool read(Genode::uint8_t address, Genode::uint8_t register, > Byte_array &out) = 0; You may use a fixed-size struct for the out parameter here struct Byte_array { char v[256]; }; which unfortunately leaves you sending all 256 bytes - significant or not - on reply to the RPC. A good option for bulk-data interfaces like yours is synchronized usage of shared memory: * Put input parameters into shared memory * Call RPC * Read output parameters from shared memory A good example for this approach can be found in os/include/terminal_session/client.h etc. Regards -- Christian Helmuth Genode Labs http://www.genode-labs.com/ · http://genode.org/ https://twitter.com/GenodeLabs · /ˈdʒiː.nəʊd/ Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth ------------------------------------------------------------------------------ LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial Remotely access PCs and mobile devices and provide instant support Improve your efficiency, and focus on delivering more value-add services Discover what IT Professionals Know. Rescue delivers http://p.sf.net/sfu/logmein_12329d2d _______________________________________________ Genode-main mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/genode-main
