6.3 虚拟地址与物理地址关系
内核虚拟地址转化为物理地址
物理地址转化为内核虚拟地址
#define __pa(x) ((unsigned long)(x)-PAGE_OFFSET)
return __pa(address);
#define __pa(x) ((unsigned long)(x)-PAGE_OFFSET)
extern inline unsigned long virt_to_phys(volatile void *address)
{
return __pa(address);
}
#define __va(x) ((void *)((unsigned long)(x)+PAGE_OFFSET))
return __va(address);
#define __va(x) ((void *)((unsigned long)(x)+PAGE_OFFSET))
extern inline void * phys_to_virt(unsigned long address)
{
return __va(address);
}
物理地址=虚拟地址-偏移量
(通常为3GB)
虚拟地址=物理地址+偏移量
(通常为3GB)