RE: question on memory mapping one page at a time

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> -----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


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux