question on memory mapping one page at a time

Sri Ram Vemulpali sri.ram.gmu06 at gmail.com
Wed Sep 21 14:06:46 EDT 2011


thanks for the replies.

On Tue, Sep 20, 2011 at 11:42 PM, rohan puri <rohan.puri15 at gmail.com> wrote:
>
>
> On Wed, Sep 21, 2011 at 2:24 AM, Jeff Haran <jharan at bytemobile.com> wrote:
>>
>> > -----Original Message-----
>> > From: kernelnewbies-bounces at kernelnewbies.org [mailto:kernelnewbies-
>> > bounces at 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 at 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.



More information about the Kernelnewbies mailing list