> -----Original Message----- > From: kernelnewbies-bounces@xxxxxxxxxxxxxxxxx [mailto:kernelnewbies- > bounces@xxxxxxxxxxxxxxxxx] 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@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies