Hi Norman,

> just a shot in the dark: Have you called 'Rpc_entrypoint::manage(ds)'
> for your dataspace object? Or to put the question differently: Is the
> dataspace capability that you return in
> 'Io_mem_session_component::dataspace()' valid inside core? If not, you
> have most likely missed to associate your 'Dataspace_component' object
> with core's entrypoint.

I had this issue already in the first email where I tried to do exaclty
this. I read through it again and my explanation wasn't clear.
When I add

> _ds_cap = _ds_ep->manage(&_ds);

It fails to build with

> In file included from 
> /.../genode/repos/base/include/dataspace/capability.h:17:0,
>                  from /.../genode/repos/base/include/dataspace/client.h:17,
>                  from 
> /.../genode/repos/base-linux/src/include/linux_dataspace/client.h:17,
>                  from 
> /.../genode/repos/base-linux/src/core/io_mem_session_component.cc:15:
> /.../genode/repos/base/include/base/capability.h: In instantiation of 
> ‘Genode::Untyped_capability Genode::Capability< <template-parameter-1-1> 
> >::_check_compatibility(const Genode::Capability<FROM_RPC_INTERFACE>&) const 
> [with FROM_RPC_INTERFACE = Genode::Linux_dataspace; RPC_INTERFACE = 
> Genode::Io_mem_dataspace; Genode::Untyped_capability = 
> Genode::Native_capability]’:
> /.../genode/repos/base/include/base/capability.h:153:49:   required from 
> ‘Genode::Capability< <template-parameter-1-1> >::Capability(const 
> Genode::Capability<FROM_RPC_INTERFACE>&) [with FROM_RPC_INTERFACE = 
> Genode::Linux_dataspace; RPC_INTERFACE = Genode::Io_mem_dataspace]’
> /.../genode/repos/base-linux/src/core/io_mem_session_component.cc:72:34:   
> required from here
> /.../genode/repos/base/include/base/capability.h:134:24: error: cannot 
> convert ‘Genode::Linux_dataspace*’ to ‘Genode::Io_mem_dataspace*’ in 
> initialization
>     RPC_INTERFACE *to = from;

I tried to circumvent this by trying different casts but I could not
find an appropriate solution (fooling the compiler with typedefs is not
one).
When you said that opening the file and adding the file descriptor was
enough I misinterpret that I don't need to call manage.

> Could you point me to a branch where I can have look at the code and
> reproduce the problem?

I have a state on [1] that contains a test `run/io_mem` which tests that
behaviour. I also have added a check to [2] so `attach` does not
segfault but throws an `Invalid_dataspace` exception.
In io_mem_session_component.cc I have already added (but commented out)
the line to call manage which does not build yet.

Thanks for your help and regards,
Johannes

[1]:
https://github.com/jklmnn/genode/tree/ac59709d4af406125454180e5453f30184505a8d
[2]:
https://github.com/jklmnn/genode/blob/ac59709d4af406125454180e5453f30184505a8d/repos/base-linux/src/lib/base/region_map_mmap.cc#L190
[3]:
https://github.com/jklmnn/genode/blob/ac59709d4af406125454180e5453f30184505a8d/repos/base-linux/src/core/io_mem_session_component.cc#L72

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
genode-main@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/genode-main

Reply via email to