On Wed, Sep 21, 2011 at 2:24 AM, Jeff Haran <[email protected]> wrote:
> > -----Original Message----- > > From: [email protected] [mailto:kernelnewbies- > > [email protected]] 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 > [email protected] > http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies > Also you can go through the second chapter of understanding linux kernel. Regards, Rohan Puri
_______________________________________________ Kernelnewbies mailing list [email protected] http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
