适用于Linux的PCIe DMA驱动程序

适用于Linux的PCIe DMA驱动程序,linux,linux-kernel,linux-device-driver,fpga,Linux,Linux Kernel,Linux Device Driver,Fpga,我目前正在开发Virtex 7 FPGA。我正在尝试安装适用于linux的PCIe DMA驱动程序的驱动程序。但它给了我以下错误: 错误:函数“pci_enable_msix”的隐式声明[-Werror=隐式函数声明] 有人能帮我解决这个错误吗?Linux 4.8将其替换为pci\u enable\u msix\u range。您可以这样修复它: #if LINUX_VERSION_CODE < KERNEL_VERSION(4,8,0) rc = pci_enable_m

我目前正在开发Virtex 7 FPGA。我正在尝试安装适用于linux的PCIe DMA驱动程序的驱动程序。但它给了我以下错误:


错误:函数“pci_enable_msix”的隐式声明[-Werror=隐式函数声明]


有人能帮我解决这个错误吗?

Linux 4.8将其替换为
pci\u enable\u msix\u range
。您可以这样修复它:

#if LINUX_VERSION_CODE < KERNEL_VERSION(4,8,0)
        rc = pci_enable_msix(pdev, lro->entry, req_nvec);
#else
        rc = pci_enable_msix_range(pdev, lro->entry, req_nvec, req_nvec);
#endif
#如果LINUX版本代码<内核版本(4,8,0)
rc=pci启用(pdev,lro->输入,请求);
#否则
rc=pci启用msix范围(pdev、lro->输入、请求、请求);
#恩迪夫

Linux 4.8将其替换为
pci_enable_msix_range
。您可以这样修复它:

#if LINUX_VERSION_CODE < KERNEL_VERSION(4,8,0)
        rc = pci_enable_msix(pdev, lro->entry, req_nvec);
#else
        rc = pci_enable_msix_range(pdev, lro->entry, req_nvec, req_nvec);
#endif
#如果LINUX版本代码<内核版本(4,8,0)
rc=pci启用(pdev,lro->输入,请求);
#否则
rc=pci启用msix范围(pdev、lro->输入、请求、请求);
#恩迪夫

对于此类问题是一个非常好的资源,因为您可以探索API相对于内核版本的变化。

对于此类问题是一个非常好的资源,因为您可以探索API相对于内核版本的变化。

请发布错误文本而不是图像。使用移动设备或使用许多公司代理的用户无法使用您的帖子。即使在典型的笔记本电脑显示器上也很难读取。错误:函数“pci_enable_msix”的隐式声明。这是我收到的错误。整个错误信息,在问题本身而不是图像中。在评论中发布它对解决我所描述的问题毫无帮助。请发布错误的文本而不是图片。使用移动设备或使用许多公司代理的用户无法使用您的帖子。即使在典型的笔记本电脑显示器上也很难读取。错误:函数“pci_enable_msix”的隐式声明。这是我收到的错误。整个错误信息,在问题本身而不是图像中。在评论中发布它对解决我所描述的问题完全没有任何作用。而且你错过了对这个API的更多更新,现在你提到的两个都过时了,需要调用
pci\u alloc\u irq\u vectors()
(调用的名称是IIRC)。你错过了对这个API的更多更新,现在你提到的两个都过时了,需要调用
pci\u alloc\u irq\u vectors()
(IIRC调用的名称)。