Jacob Gorm Hansen jg@ioi.dk writes:
On Tue, Oct 01, 2002 at 04:36:34PM +0200, Jean Wolter wrote:
Jacob Gorm Hansen jg@ioi.dk writes:
what is the purpose of the ping-pong task in l4linux? I can see that it handles vmalloc requests for the kernel, but why does it need its own task for this?
For some reasons intra task mapping where forbidden in the original L4 implementation from Jochen Liedtke, so we had to play ping pong with the mapping. Unfortunatly nobody can remember what the real reason for this design decision was...
So this is if I wish for a page to be mapped multiple places in my space, correct?
This is needed if you want to map one page of your own address space to another place in your own address space without asking the pager whether he can supply the same page again.
Sigma0 rejected requests for a page it had already given away and had no interface for flush requests which where needed for vmfree(). So we use the ping pong task to establish mappings (by mapping the page to the ping pong address space and granting it back immediately) and are able to unmap the page ourself.
Jean