Messages in this thread | | | Date | Wed, 3 Sep 2003 11:28:05 +0100 | From | Jamie Lokier <> | Subject | Re: mmap(MAP_PRIVATE) question |
| |
Gianni Tedesco wrote: > Hi all, > > >From the mmap(2) manpage it says: > > MAP_PRIVATE > Create a private copy-on-write mapping. Stores to the region do not > affect the original file. It is unspecified whether changes made > to the file after the mmap call are visible in the mapped region. > > What is linux behaivour in this area? I am guessing if the page is > modified between the call to mmap() and fault-in then the modified copy > is seen by the application? But what about modifications after the page > is already in page-cache?
The page cache page is mapped into the application just like a shared mapping, until the application writes to the mapped region and triggers the copy-on-write fault.
This means that if you write() to the page prior to the copy-on-write fault, you may see the changes in application memory straight away. If some other process writes to the page through a writable mapping, you may see the changes.
On the other hand you may not. On some of the architectures which Linux supports, the CPU's cache is not sufficiently coherent to guarantee that what is written with write(), or by another process, will be seen in this application's memory. Indeed, you might see a mixture of some of the written data and some of the data before it was written, with no particular guarantee of which bits of data or in what order.
-- Jamie - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |