以PCI区域的“struct page”为例

时间:2014-01-01 09:00:24

标签: linux-kernel linux-device-driver

我正在编写一个内核模块(在VirtualBox中为2.6.32-358.el6.x86_64)。 我尝试将struct page对应于物理地址0xf0000000,该地址似乎位于PCI区域(/proc/iomem显示f0000000-f001ffff : 0000:00:03.0)。

unsigned long phys = 0xf0000000;
struct page *p = pfn_to_page(phys >> PAGE_SHIFT);
printk(KERN_NOTICE "page %p", p); // shows ffffea0003480000

但是,它似乎不是一个有效的指针,因为每次尝试访问p字段都会导致系统崩溃(总冻结)。

上述代码有什么问题? PCI地址范围是否具有适当的struct page

1 个答案:

答案 0 :(得分:0)