question on memory mapping one page at a time

rohan puri rohan.puri15 at gmail.com
Tue Sep 20 23:42:54 EDT 2011


On Wed, Sep 21, 2011 at 2:24 AM, Jeff Haran <jharan at bytemobile.com> wrote:

> > -----Original Message-----
> > From: kernelnewbies-bounces at kernelnewbies.org [mailto:kernelnewbies-
> > bounces at kernelnewbies.org] On Behalf Of Sri Ram Vemulpali
> > Sent: Tuesday, September 20, 2011 11:24 AM
> > To: kernelnewbies
> > Subject: question on memory mapping one page at a time
> >
> > Hi all,
> >
> > can anyone please explain the following code, what it is doing. I want
> > the first few statements of the code,  as they are calculating page
> > frame number. This is little confusing, thanks in advance.
> >
> > struct page *simple_vma_nopage(struct vm_area_struct *vma,
> >                 unsigned long address, int *type)
> > {
> >     struct page *pageptr;
> >     unsigned long offset = vma->vm_pgoff << PAGE_SHIFT;
> >     unsigned long physaddr = address - vma->vm_start + offset;
> >     unsigned long pageframe = physaddr >> PAGE_SHIFT;
> >     if (!pfn_valid(pageframe))
> >         return NOPAGE_SIGBUS;
> >     pageptr = pfn_to_page(pageframe);
> >     get_page(pageptr);
> >     if (type)
> >         *type = VM_FAULT_MINOR;
> >     return pageptr;
> > }
> >
> > --
> > Regards,
> > Sri.
>
> Do a search on "Understanding the Linux Virtual Memory Manager" by Mel
> Gorman. The PDF is out there for free or you can buy the hardcopy.
>
> I think you will find the above code clearer after you've read the
> above.
>
> Jeff Haran
>
>
>
>
>
> _______________________________________________
> Kernelnewbies mailing list
> Kernelnewbies at kernelnewbies.org
> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
>

Also you can go through the second chapter of understanding linux kernel.

Regards,
Rohan Puri
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20110921/d3ca9144/attachment.html 


More information about the Kernelnewbies mailing list