Re: Clarifications on PFN_UP(x) macro

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

 



On Tue, 04 Jun 2013, stl wrote:
> Hello,
> I need some clarifications concerning the macro
> 
> #define PFN_UP(x)    (((x) + PAGE_SIZE-1) >> PAGE_SHIFT)
> 
> found in "pfn.h"
> 
> I suppose that its aim is to give the page frame number of the page
> following the page holding the physical address x, contrary to
> PFN_DOWN(x) which give the page frame number of the page holding the
> address x.
> 
> Assuming that the first page has the range 0x0000 to 0x0FFF,
> the second 0x1000 to 0x1FFF and so on, it seems that there is
> an issu with the starting address of each page, for example:
> x = 0x10000  (PFN number 10)
> 0x10000 + 0xFFF >> 12    =    10, but should be 11 no?
> 
> I certainly misunderstood something.
> Could someone clarify this point please?
> 

Your calculation is good. Your understanding of what the macro does is not.
You should understand the macro like "return the address of the next page
relative to this address" which includes the address as is if it is page-
aligned.

Regards,
Tobi


_______________________________________________
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