Intercepting ram session of child
Denis Huber
huber.denis at ...435...
Sun Aug 14 18:03:02 CEST 2016
Hello Genode community,
I am working on a checkpointing component which runs in Genode's
userland, on Genode 16.05 on the foc kernel (pbxa9 build). I want to
provide custom Ram, Pd, and Cpu sessions for a child component (target)
to intercept the remote procedure calls to keep book of the state of the
child. But I am having trouble to create such sessions.
I looked into the gdb_monitor and noux component and tried to adopt the
concepts used. In the gdb_monitor, I found the pd_session_component
without a pd_root implementation a very promising approach.
It creates a custom Gdb_monitor::Pd_session_component, which wraps a
Genode::Pd_connection object. In the constructor the manage method of an
entrypoint for this Pd_session_component is called, thus the remote
procedure calls to this object can be handled.
I tried to adopt this concept for a custom Ram session. I created a very
short test program [1] (Run script in [2]) which creates a custom
Ram_session_component and tries to transfer quota from its environment
to the custom Ram session component. The quota transfer fails with error
code -1, which means the recipient of the transfer is not a valid
session component [3].
I think the problem is, that I have not created a valid capability of
the custom Ram_session_component. What important fact do I miss in my
implementation? I am grateful for every hint you give me :)
[1]
https://github.com/702nADOS/genode-CheckpointRestore-SharedMemory/blob/d2c6705bb9951f58d3b01f8e35fa68197cc73cd7/src/random/main.cc
[2]
https://github.com/702nADOS/genode-CheckpointRestore-SharedMemory/blob/d2c6705bb9951f58d3b01f8e35fa68197cc73cd7/run/random.run
[3]
https://github.com/genodelabs/genode/blob/16.05/repos/base/src/core/ram_session_component.cc#L75
Kind regards,
Denis
More information about the users
mailing list