explanation of __va() and __pa() macros.

AFT aftnix at gmail.com
Fri Jun 22 07:49:07 EDT 2012


Hi,

My source is from 2.6 git tree. In LDD3 its said that a logical address
is mapped to physical address and vice versa by the macros __va() and
__pa().

In my source tree they are defined as follows:

<include/asm-generic/page.h>

#define __va(x) ((void *)((unsigned long) (x)))
#define __pa(x) ((unsigned long) (x))


I'm not actually understanding how these "cute" looking casting is
performing "address mapping". I thought address mapping involves more
complex operations.

cheers.
aft 



More information about the Kernelnewbies mailing list