我已经在用户空间中映射了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函数将该地址传递给驱动程序。
在驱动程序代码中,
我从ioctl获得的地址拨打get_user_pages
。
执行中,get_user_pages
呼叫失败。
如何解决此问题。
答案 0 :(得分:0)
get_user_pages返回有效物理内存的struct page指针,而不是IO内存,因此预计get_user_pages将因PCI内存而失败。除非你提供有关你的设计的更多细节,否则很难建议如何解决它。