About Inter-process Communication
adam at os.inf.tu-dresden.de
Tue Jul 24 23:24:48 CEST 2012
On Tue Jul 24, 2012 at 19:15:17 +0800, ZhangEditing wrote:
> I need to send megabytes of data from one virtual machine to another.
> I looked into source code of IPC streams for C++, but did not find any
> facility for sending the content of a large buffer (say, 512B).
Exchanging larger amounts of data between tasks (or VMs) is typically
done using shared memory, i.e. a piece of memory shared between both (or
more) parties and interrupts for notification.
> I have also noticed the buffer registers in the UTCB, but I haven't
> figured out how to use it.
Buffer registers are used for mappings and not for data.
> If there is a way to send the content of a large buffer, would you
> please reference me to the related documents?
> A simple example would be very helpful.
There a shared memory library, see l4/pkg/shmc and
4/pkg/examples/libs/shmc/. The lib just wraps around a dataspace that
is shared between some tasks. There's also a more low-level example:
l4/pkg/examples/libs/l4re/c++/shared_ds/. This example is a client and
server one, where the client requests the dataspace from the server.
Adam adam at os.inf.tu-dresden.de
More information about the l4-hackers