Hello,
I'm using the public git version, the last commit is 3d5f77599fbdca8ae089f36e93b5ecd778ab5b3b .
I forged the hello tutorial, but my version didn't run, nor the hello_tutorial itself. There was two errors: 1) the Service "CAP" was not found , first the service "LOG" was not found.
2) The server was not found. In the default route must be <any-service> <parent/> <any-child/> </any-service> or an specific route
After some research in the run scripts, I found this following config: <config verbose="yes"> <parent-provides> <service name="ROM"/> <service name="RAM"/> <service name="IRQ"/> <service name="IO_MEM"/> <service name="IO_PORT"/> <service name="CAP"/> <service name="PD"/> <service name="RM"/> <service name="CPU"/> <service name="LOG"/> <service name="SIGNAL"/> </parent-provides> <default-route> <any-service> <parent/> <any-child/> </any-service> </default-route> <start name="timer"> <resource name="RAM" quantum="1M"/> <provides><service name="Timer"/></provides> <route><any-service><parent/></any-service></route> </start> <start name="hallo_server"> <resource name="RAM" quantum="1M"/> <provides><service name="Hallo"/></provides> </start> <start name="hallo_client"> <resource name="RAM" quantum="1M"/> </start> </config> It was successfully tested on Linux and foc (with qemu)
Does the <parent-provides>-Section need to be compelete ?
Does a Child can read out all services provided by its parent and all brothers wfrom which it is allowed to access services ?
Rudolf Informatik- und Netzwerkverein Ravensburg e.V http://www.infnet.verein.de/home/rw/index.html
Hello Rudolf,
I forged the hello tutorial, but my version didn't run, nor the hello_tutorial itself. There was two errors:
the Service "CAP" was not found , first the service "LOG" was not found.
The server was not found. In the default route must be <any-service> <parent/> <any-child/> </any-service> or an specific route
Thank you for the notice and sorry for the inconvenience. I have added the missing pieces to the document:
commit: https://github.com/genodelabs/genode/commit/91de81a10a248a81ee067af9f10b574b... update: http://genode.org/documentation/developer-resources/client_server_tutorial
Does the <parent-provides>-Section need to be compelete ?
It needs to list all services that should made principally usable by the children of the init process. These are not necessarily the entirety of services provided by core. For example, if no child uses core's IO_PORT service, there is no point in declaring it.
In addition to enabling init to deny access to parent services by not listing them, the explicit declaration of the parent services is needed to route session requests in an unambiguous way.
To learn more about the configuration of the init process, I recommend the following document:
http://genode.org/documentation/developer-resources/init
Does a Child can read out all services provided by its parent and all brothers wfrom which it is allowed to access services ?
There is no way for a child to discover the environment outside its own subsystem. This is on purpose. Strictly speaking, such a feature would contradict with the principle of least privilege. In most situations, we would reveal more information to the child than needed for its operation.
In Genode, the runtime behavior of each process should solely depend on the information explicitly provided by the parent of the process. If the behavior of a child process somehow depends on the environment outside the process, it is the parent's responsibility to propagate such information to the child, for example by providing a configuration that expresses the desired policy but that entails no more information than that.
Best regards Norman