Hello Georg,
On Thu, Jan 14, 2016 at 12:29:49PM +0100, Georg Guba wrote:
I'm trying to start new child components from ELF binaries received at run-time and stored in a server-local buffer. Basically, I am trying to implement a server that can receive task descriptions and matching binaries and then start them at run-time (disregarding security concerns for the moment).
It appears, however, that all ROM connections must reference binaries that are available at boot-time and adding to the ROM FS is not possible without accessing Genode's internal code which I'd like to avoid.
So, how would I best go about creating entirely new ROM sessions at runtime?
The first idea that comes to my mind is: Implement a ROM server "elf_rom", which stores the retrieved ELF binaries in dataspaces allocated from its RAM session. Afterwards setup the routing in your init config for all "children" of your "parent" to "elf_rom" like follows
<route> .. <service name="ROM"> <child name="elf_rom_server"/> </service> .. </route>
This may need two special precautions. First, you may need a nested init instance which is configured with the route above. Second, you may need some exceptions from the rule above if elf_rom_server does not provide ROMs for "parent" and its shared libraries (if used) like
<service name="ROM" label="parent"> <parent/> </service>
Greets