Mapping memory into process address space

Noah Zentzis nzentzis at pdx.edu
Thu Aug 28 06:33:41 CEST 2014


On 08/21/2014 02:14 PM, Adam Lackorzynski wrote:
> Yes, you'd need to create a new region mapper for the new task, one that
> knows about the virtual address space layout of that one. Should be
> possible by using a new instance of Region_map as done in the
> l4re_kernel.You'll also need to create an IPC-gate to be used as the
> pager for the new task and which is routed to the Region_map instance
> for that task. You also need to handle other events that come through
> the pager channel, see Dispatcher::dispatch in
> l4re_kernel/server/src/dispatcher.cc for the switch block.

I'm not sure how to create a new Rm instance - I'm trying this:

L4::Cap<L4Re::Rm> region = newcap<L4Re::Rm>(); // allocate capability
factory->create(region, L4Re::Protocol::Rm);
check_cap(region, "Failed to allocate region map");

But the factory fails to create a new region map. This is, as far as I 
can tell, exactly what libloader is doing, so I'm not sure what's wrong. 
Also, can I use the current task's pager for testing instead of 
implementing the interface, or will it fail if I don't handle paging myself?

- Noah Zentzis




More information about the l4-hackers mailing list