Hi Genodians,

I'm stuck with service routing. When I use the default routes the hello-application works. When I remove the default and create explicit routes for the ROM-service these fail. Here's my writeup:

I added this line to repos/os/src/init/child.cc:
  Init::Child::resolve_session_request(
  +  log("child \"", name(), "\" resolves \"",
        service_name, "\" label [", label, "]");

It logs which child is resolving what service and label. With default routing, I get this output (for ROMs) in make run/hello:

Genode 18.05-203-gf4ea50c6f <local changes>
[init] child "hello_client" resolves "ROM" label [hello_client]
[init] child "hello_client" resolves "ROM" label [ld.lib.so]
[init] child "hello_server" resolves "ROM" label [hello_server]
[init] child "hello_server" resolves "ROM" label [ld.lib.so]
[init] child "hello_server" resolves "ROM" label [hello_server -> config]
[init] child "hello_client" resolves "ROM" label [hello_client -> config]
[init] child "hello_server" resolves "ROM" label [hello_server -> session_requests]
...
[init -> hello_client] hello test completed

So far so good.

However, when I take out the <default-route> entry and add explicit routes to hello.run for the hello-client serivce:

  <route>
    <service name="PD"> <parent/> </service>
    <service name="CPU"> <parent/> </service>
    <service name="LOG"> <parent/> </service>
    <service name="Hello"> <child name="hello_server"/> </service>
    <service name="ROM" label="hello_client"> <parent/> </service>
    <service name="ROM" label="ld.lib.so"> <parent/> </service>
    <service name="ROM" label="hello_client -> config"> <parent/>
        </service>
    <service name="ROM" label="hello_client -> session_requests">
        <parent/> </service>
  </route>

I get these errors: (skipping things that go well)

[init] child "hello_client" resolves "ROM" label [hello_client]
[init] Warning: hello_client: no route to service "ROM"
[init] Error: hello_client: ROM environment session denied
...
[init] child "hello_client" resolves "ROM" label [ld.lib.so]
[init] Warning: hello_client: no route to service "ROM"
[init] Error: hello_client: ROM environment session denied
...
Makefile:312: recipe for target 'run/hello' failed

What's happening here?
Why are my explicit routes to the labels I find in the first log not working?
How can I make explicit routes work for these services?


Cheers, Guido.

_______________________________________________
Genode users mailing list
[email protected]
https://lists.genode.org/listinfo/users

Reply via email to