0

我已经在用户空间中映射了 pci 内存,例如

fs = open("/dev/mem",O_RDWR | O_SYNC);

mmap_src = mmap(NULL, BUFF_COUNT, PROT_READ | PROT_WRITE, MAP_SHARED, fs, 0xe0000000);

0xe0000000是 pci 内存设备的地址。

mmaped 成功后,我使用 ioctl 函数将该地址传递给驱动程序。

在驱动程序代码中,

get_user_pages从从 ioctl 获得的那个地址打电话。

在执行中,get_user_pages调用失败。

关于如何解决这个问题的任何想法。

4

1 回答 1

0

get_user_pages 返回有效物理内存而不是 IO 内存的 struct page 指针,因此预计 get_user_pages 对于 PCI 内存将失败。除非您提供有关您的设计的更多详细信息,否则很难建议如何修复它。

于 2013-06-21T16:07:17.413 回答