pfn_to_page(page)以及PFN_UP(x)的问题

内核编译和嵌入式产品的设计与开发
回复
yfl8640
帖子: 24
注册时间: 2010-04-23 12:26
送出感谢: 0
接收感谢: 0

pfn_to_page(page)以及PFN_UP(x)的问题

#1

帖子 yfl8640 » 2010-12-18 11:44

下面的宏定义都是获取页面号:
#define pfn_to_page(page) ((unsigned long )((page-mem_map)+PHYS_PFN_OFFSET)) 这里的page为页管理单位的地址,相当于一个指针的值 ,也就数page=&mem_map[x];
#define PFN_UP(x) (((x)+ PAGE_SIZE-1)>> PAGE_SHIFT) 这里的x是分配给页的物理的起始地址.

那这里就有疑问了,对于物理地址为x对应的页面号为x>>PAGE_SHIFT(12),而mem_map[]对应的下标同样也为页面号(mem_map[0]对应的页面号为0,并且对应的物理地址范围为【0:0xfff】),那么page-mem_map也就是对应的下标(也就是页面号了),为什么还需要+PHYS_PFN_OFFSET((0xc0000000UL))呢?


请指教,谢谢!
回复

回到 “内核及嵌入式开发”