Martin Young my@siroyan.com writes:
Thinking it through however it's obvious that a task A can map a page P to task B which can then map it back to task A at a different virtual address. Is this allowed in L4? (I assume it is) Is it useful? Could I get away with not allowing it? I ask because my initial implementation includes a quick index from a taskid to a node in the mapping tree (to avoid recursion rather than for speed) but this requires that each task has only a single entry.
L4Linux would not work on your L4 implementation, since we need more then one mapping for a page in the same address space to be able to implement vmalloc() and friends. To do this we currently map one page to a special helper task which immidiatly grants it back those creating a new mapping for the same page in the address space of L4Linux (we do this since for some reasons Jochen's L4 version didn't support intra task mappings, but I forgot the reasoning behind this design decision).
Jean
Jean Wolter wrote:
Martin Young my@siroyan.com writes:
Thinking it through however it's obvious that a task A can map a page P to task B which can then map it back to task A at a different virtual address. Is this allowed in L4? (I assume it is) Is it useful?
L4Linux would not work on your L4 implementation, [snip]
Thanks Jean and Espen.
I've been and look at Summer School slides (of which I wasn't previously aware) and I've now implemented the scheme described there which, as predicted, resulted in rather less code with fewer special cases.
Thanks again.
l4-hackers@os.inf.tu-dresden.de