Hello,

thanks Tobias for the interesting report. I have only very little to add
to the comprehensive responses of Jakub and Martin.

>> (2) - Problem 2: The first loaded task in the Genode Framework is per
>> definition the "core" task. As far is I can judge core has to do
>> nothing at all with IPC mechanisms. In the current state I do not know
>> any solution to this problem, since I have not such deep knowledge of
>> the Genode system.

Actually, core happens to perform IPC with itself. When spawning the
init process, core uses its own services such as RAM, RM, CPU to
construct the child process. E.g. ,the innocently looking function call
in 'base/src/core/main.cc' at line 225 is an RPC call:

 env()->ram_session()->transfer_quota(init_ram_session_cap, init_quota);

Hence, core expects the IPC framework to work at this stage. But from
what I gathered from Jakub's mail, this does not look like a fundamental
problem.

When it comes to process creation, my intuition is to let core play the
role of the naming service. It is then up to core to let the other
processes know each other according to core's policy, in particular to
establish the communication channel of a new process to its parent. Btw,
the latter problem is already captured by the API of core's PD service
(PD = protection domain) that is used to create new processes in Genode
(see 'base/include/pd_session/pd_session.h'). After creating a PD
session, the PD client (the parent of the new process) is able to define
itself as the parent of the new child via the 'assign_parent()'
function. On most platforms, this procedure is performed by the
'process' library ('base/src/base/process/process.cc'). On SPARTAN, you
will most certainly need to replace this implementation.

Regards
Norman

_______________________________________________
HelenOS-devel mailing list
[email protected]
http://lists.modry.cz/cgi-bin/listinfo/helenos-devel

Reply via email to