shared dataspace for l4re_kernel/ registering additional caps in ned
Adam Lackorzynski
adam at os.inf.tu-dresden.de
Tue Sep 23 07:29:38 CEST 2014
On Sat Sep 20, 2014 at 20:45:19 +0000, Stark, Josef wrote:
> Everything's working so far! But I have another question... (the actual question is at the bottom)
>
> Here's what I do now:
> If manager wants to start a received binary, it tells Ned to start "network",
> e.g. start({caps = {ipc_gate= L4.Env.ipc_gate}},"network"); and Ned then starts
> - as usual - l4re. l4re then detects the special filename - "network" - and instead of
> trying to load a file with this filename from ROM (which doesn't exist) it asks manager for
> the shared dataspace which holds the binary. Since manager may alter the content
> of the shared dataspace later, l4re copies the shared dataspace and then launches this copy.
>
> So, basically, (in main.cc of l4re_kernel) instead of
>
> file = L4Re_app_model::open_file(Global::l4re_aux->binary);
>
> we do
>
> L4::Cap<L4Re::Dataspace> ds;
> get_shared_dataspace(ds); //allocation and IPC stuff
> file=L4Re_app_model::alloc_ds(ds->size()); //this method is now static
> L4Re_app_model::copy_ds(file,0,ds,0,ds->size());
>
> and then continue with the regular
>
> loader.start(file, Global::local_rm, Global::l4re_aux);
>
> which works.
>
>
> But my question is, once the task gets killed or finishes, do I need to release/free/unmap
> the dataspace "file" again (since it is a copy in memory and not a file on ROM)
> to avoid a resource leak, and, if so, where whould I do this? Or is this done automatically?
This will be done automatically. Moe will free resources when all
clients are gone.
Adam
--
Adam adam at os.inf.tu-dresden.de
Lackorzynski http://os.inf.tu-dresden.de/~adam/
More information about the l4-hackers
mailing list