thanks for the replies. On Tue, Sep 20, 2011 at 11:42 PM, rohan puri <rohan.puri15@gmail.com> wrote:
On Wed, Sep 21, 2011 at 2:24 AM, Jeff Haran <jharan@bytemobile.com> wrote:
-----Original Message----- From: kernelnewbies-bounces@kernelnewbies.org [mailto:kernelnewbies- bounces@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@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Also you can go through the second chapter of understanding linux kernel.
Regards, Rohan Puri
-- Regards, Sri.