On Wed, Sep 21, 2011 at 2:24 AM, Jeff Haran <jharan@xxxxxxxxxxxxxx> wrote:
> -----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
>Do a search on "Understanding the Linux Virtual Memory Manager" by Mel
> 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.
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
Also you can go through the second chapter of understanding linux kernel.
Regards,
Rohan Puri
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies