phys_to_virt是将已经映射的物理内存的地址转换为虚拟地址

函数定义:

static inline void *phys_to_virt(unsigned long x)
{
    return (void*)(__phys_to_virt((unsigned long)(x)));
}

 

#define__phys_to_virt(x)   ((x) - PHYS_OFFSET + PAGE_OFFSET)

 

#ifdef CONFIG_CPU_S3C2400
#definePHYS_OFFSET   (0x0C000000UL)
#else
#definePHYS_OFFSET    ()   //2410应该使用这个偏移地址
#endif

 

#definePAGE_OFFSET       (0xc0000000UL)   //3G处


 

由此可知物理内存与内核虚拟地址3G开始处一一对应.

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐