<br><br><div class="gmail_quote">On Wed, Sep 21, 2011 at 2:24 AM, Jeff Haran <span dir="ltr">&lt;<a href="mailto:jharan@bytemobile.com">jharan@bytemobile.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
&gt; -----Original Message-----<br>
&gt; From: <a href="mailto:kernelnewbies-bounces@kernelnewbies.org">kernelnewbies-bounces@kernelnewbies.org</a> [mailto:<a href="mailto:kernelnewbies-">kernelnewbies-</a><br>
&gt; <a href="mailto:bounces@kernelnewbies.org">bounces@kernelnewbies.org</a>] On Behalf Of Sri Ram Vemulpali<br>
&gt; Sent: Tuesday, September 20, 2011 11:24 AM<br>
&gt; To: kernelnewbies<br>
&gt; Subject: question on memory mapping one page at a time<br>
<div class="im">&gt;<br>
&gt; Hi all,<br>
&gt;<br>
&gt; can anyone please explain the following code, what it is doing. I want<br>
&gt; the first few statements of the code,  as they are calculating page<br>
&gt; frame number. This is little confusing, thanks in advance.<br>
&gt;<br>
&gt; struct page *simple_vma_nopage(struct vm_area_struct *vma,<br>
&gt;                 unsigned long address, int *type)<br>
&gt; {<br>
&gt;     struct page *pageptr;<br>
&gt;     unsigned long offset = vma-&gt;vm_pgoff &lt;&lt; PAGE_SHIFT;<br>
&gt;     unsigned long physaddr = address - vma-&gt;vm_start + offset;<br>
&gt;     unsigned long pageframe = physaddr &gt;&gt; PAGE_SHIFT;<br>
&gt;     if (!pfn_valid(pageframe))<br>
&gt;         return NOPAGE_SIGBUS;<br>
&gt;     pageptr = pfn_to_page(pageframe);<br>
&gt;     get_page(pageptr);<br>
&gt;     if (type)<br>
&gt;         *type = VM_FAULT_MINOR;<br>
&gt;     return pageptr;<br>
&gt; }<br>
&gt;<br>
&gt; --<br>
&gt; Regards,<br>
&gt; Sri.<br>
<br>
</div>Do a search on &quot;Understanding the Linux Virtual Memory Manager&quot; by Mel<br>
Gorman. The PDF is out there for free or you can buy the hardcopy.<br>
<br>
I think you will find the above code clearer after you&#39;ve read the<br>
above.<br>
<font color="#888888"><br>
Jeff Haran<br>
</font><div><div></div><div class="h5"><br>
<br>
<br>
<br>
<br>
_______________________________________________<br>
Kernelnewbies mailing list<br>
<a href="mailto:Kernelnewbies@kernelnewbies.org">Kernelnewbies@kernelnewbies.org</a><br>
<a href="http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies" target="_blank">http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies</a><br>
</div></div></blockquote></div><br>Also you can go through the second chapter of understanding linux kernel.<br><br>Regards,<br>Rohan Puri<br>