Re: unmap() sometimes unmaps more pages than specified
Espen Skoglund <[email protected]>
| Newsgroups | gmane.comp.micro-kernel.l4.l4ka.general |
|---|---|
| Message-ID | <[email protected]> |
[Espen Skoglund] > You have two spaces A and B. A has a 4MB page mapping. B has > received a 4KB page mapping from A. Currently we have: > (1) A.Flush(4K) == A.Flush(4M) since A has a 4MB mapping. > (2) Likewise A.Unmap(4K) == A.Unmap(4M) since A has a 4MB mapping. > (3) B.Flush(4K) is fine since B has a 4KB mapping. > (4) Consequently A.Unmap(4K) != B.Flush(4K). > I guess (4) is what you find difficult to handle, right? This would > work fine if (2) was not the case. Currently the implementation > does (obviously) not behave this way. I'll give some thought to how > this could most easily be handled. The behaviour also raises some > questions about the semantics of resetting/reading reference bits, > but I think this could possibly be sorted out. FYI: Just implemented this a couple of days ago, and Jan has been pushing this (and a bunch of other updates) to the public. What we have now is: A.Unmap(4K) == B.Flush(4K). eSK