<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Jul 25, 2013 at 11:33 AM, Greg Freemyer <span dir="ltr">&lt;<a href="mailto:greg.freemyer@gmail.com" target="_blank">greg.freemyer@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class=""><div class="h5">On Thu, Jul 25, 2013 at 1:52 PM, kernel neophyte<br>

&lt;<a href="mailto:neophyte.hacker001@gmail.com">neophyte.hacker001@gmail.com</a>&gt; wrote:<br>
&gt; ok,<br>
&gt;<br>
&gt; I am sorry maybe I did not ask the question correctly, all I want to know is<br>
&gt; how mmap works underneath, given an address X how does kernel figure out its<br>
&gt; a mmaped page ?<br>
&gt;<br>
&gt; -Neo<br>
&gt;<br>
&gt;<br>
&gt; On Thu, Jul 25, 2013 at 10:04 AM, &lt;<a href="mailto:Valdis.Kletnieks@vt.edu">Valdis.Kletnieks@vt.edu</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; On Thu, 25 Jul 2013 09:14:03 -0700, kernel neophyte said:<br>
&gt;&gt;<br>
&gt;&gt; &gt; Could anyone please explain, how mmap works underneath ? when kernel<br>
&gt;&gt; &gt; traveses pgd-&gt;pud-&gt;pmd-&gt;pte how does it know that a particular page is a<br>
&gt;&gt; &gt; mmaped page ? is there any special flag ?<br>
&gt;&gt;<br>
&gt;&gt; Why would the address mapping hardware even *care* that it&#39;s an mmap&#39;ed<br>
&gt;&gt; page, once the mapping is set up?  For that matter, why would most of<br>
&gt;&gt; the kernel code care?<br>
&gt;&gt;<br>
&gt;&gt; Only time an mmap&#39;ed page is any different than any other process page is<br>
&gt;&gt; while the mmap is actually being set up, modified, or torn down.<br>
&gt;&gt;<br>
&gt;&gt; (And in fact, that&#39;s part of why getting the varions sync() calls to play<br>
&gt;&gt; nice with mmap() is so hard - because an mmap&#39;ed file page is just a page.<br>
&gt;&gt; So noticing that a page got modified and knowing to do stuff like update<br>
&gt;&gt; the atime and mtime of the backing file is difficult...)<br>
&gt;&gt;<br>
<br>
</div></div>Neo,<br>
<br>
First be aware this is bottom post only mailing list, as are most of<br>
the LKML lists, so if you are going to post on the public lists you<br>
will need to start bottom posting.<br>
<br>
As to your question, the more specific you are the better.<br>
<br>
There are 3 situations I can think of offhand, but I don&#39;t know which<br>
one you are interested in:<br>
<br>
1) Userspace does a read/write to a data page that is not memory<br>
resident and the page is backed by a mmap&#39;ed file.<br>
<br>
2) Userspace does a read/write to a data page that is memory resident<br>
<br>
3) The kernel decides a memory page is needed for another use and<br>
needs to be sync&#39;ed to disk if any data updates are not to be lost.<br>
<br>
Valdis is saying for case 2) the kernel doesn&#39;t care.  The kernel is<br>
not even in the loop.  The userspace app has the memory pages<br>
available to it via the standard MMU mapping so the data accesses just<br>
work.<br>
<br>
The kernel in general only has to handle case 1) and case 3)</blockquote><div><br></div><div>I am sorry, its still not clear to me. All I am asking is <span style="color:rgb(51,51,51);font-family:&#39;Helvetica Neue&#39;,Arial,sans-serif;font-size:15px"> I want to know and understand how mmap works, given an address </span><i style="margin:0px;padding:0px;color:rgb(51,51,51);font-family:&#39;Helvetica Neue&#39;,Arial,sans-serif;font-size:15px">X</i><span style="color:rgb(51,51,51);font-family:&#39;Helvetica Neue&#39;,Arial,sans-serif;font-size:15px">, how does the Linux kernel figure out that </span><i style="margin:0px;padding:0px;color:rgb(51,51,51);font-family:&#39;Helvetica Neue&#39;,Arial,sans-serif;font-size:15px">X</i><span style="color:rgb(51,51,51);font-family:&#39;Helvetica Neue&#39;,Arial,sans-serif;font-size:15px"> is an mmaped page? Is there a special flag in the page table entry? Does the access generate a page fault ? If so, how does the handler find out it is an mmaped address?</span> </div>
<div><br></div><div>Sorry for the inconvenience caused, Thanks a lot for your time in replying. </div><div><br></div><div>-Neo</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
 </blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<span class=""><font color="#888888"><br>
Greg<br>
</font></span></blockquote></div><br></div></div>