matthias.lange at kernkonzept.com
Tue Aug 16 10:02:30 CEST 2016
On 08/15/2016 12:47 PM, ba_f wrote:
> Am 2016-08-11 09:07, schrieb Matthias Lange:
>>> If I got it right, any Task can create an IPC-Gate at run-time and
>>> thus create child tasks with ipc-server or ipc-client capabilities,
>>> don't they?
>> That depends on the task's factory but the general answer is yes.
> do you have a reference design for this?
> So maybe one 'parent' Task creating two 'childs' and establishes an IPC
> between them.
I am afraid that there is no such reference example. I would recommend
looking into ned's implementation (look for __alloc(lua_State *l) in
lua_factory.cc and exec(lua_State *l) in lua_exec.cc as starting points).
Basically, here is what you have to do (I leave the loading and setup of
the child program out):
- create new task
- create new thread
- create new IPC gate (needs to be done only once)
- map thread capability into new task
- map initial caps and IPC gate cap into new task
- setup pager and exception handler of the new task
- start the new thread
For some inspiration you can look at
libloader/include/remote_app_model::start_prog(). For ELF loading and
setup of the l4re kernel you should also consider using libloader's
> Have a nice day,
More information about the l4-hackers