[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Extensions to mincore



Hi,

On Tue, Mar 21, 2000 at 04:55:32PM +0100, Jamie Lokier wrote:
> 
> Didn't you read a few paragraphs down, where I explain how to implement
> this?  You've got struct page.  It is enough for private mappings, and
> we don't need this feature for shared mappings.

Umm, yes, but just saying "we'll solve synchronisation problems by 
stopping all the other threads" hardly seems like a "solution" to me:
more of a workaround of the problem!  mprotect() does work correctly
without stopping other threads.

> It would be enough the say "the mincore accessed/dirty bits are not
> guaranteed to be accurate if pages are accessed by concurrent threads
> during the mincore call".

Exactly why you need mprotect, which _does_ make the necessary 
guarantees.

Oh, and suggesting that we can obtain the dirty bit by assuming all
mappings are private doesn't work either.  Private mappings *need* a 
per-pte (NOT per-page, but per-pte) dirty bit to distinguish between 
pages shared with the underlying mapped object, and pages which have
been modified by the local process.

--Stephen

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux.eu.org/Linux-MM/