linux内核函数page_address()

use*_*314 1 linux memory linux-device-driver linux-kernel

我对这个功能感到困惑:

void*page_address(struct page*page)

其中(1)"根据"Linux Kerenl developpement 3rd edition"将给定页面转换为其逻辑地址"(2)"根据"了解linux内核>>"返回与页面框架相关的线性地址"(3)根据"了解linux虚拟内存管理器""返回页面的物理地址"

哪一个是正确的呢?

让我们看(1):这个函数采用指向物理页面(页面框架)的指针,那个指针不是"与该页面框架相关联的逻辑地址"吗?那么指针值和返回值之间有什么区别呢?谢谢.

caf*_*caf 7

1和2都是正确的 - 它们是两种说同样的方式(虽然解释2更清楚).说明3不正确 - page_address()返回页框的虚拟地址,而不是物理地址.

page_address()并没有采取一个指针到页/页帧.它需要一个指针struct page,它是一个代表页面的内核数据对象.