explanation of __va() and __pa() macros.

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


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

In my source tree they are defined as follows:


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


More information about the Kernelnewbies mailing list