如何检查文件描述符/内存是否支持 mmap?

如何检查文件描述符/内存是否支持 mmap?

我正在尝试访问内存位置“/dev/xdma_h2c_0”。我已经使用系统读/写功能实现了读/写。现在我尝试使用 mmap 执行相同操作。但我收到 No such device 错误。有没有一种快速方法可以判断位置/文件描述符是否是 mmap(可)的?(此内存位置可在使用 Xilinx 驱动程序的 Xilinx Virtex FPGA 板上使用)

答案1

根据您的评论,/dev/xdma_h2c_0是一个字符设备,因此无法mmap()在其上使用 - 这根本没有意义,主要是因为它不是一个可寻址的设备(您也不能使用lseek()/ fseek())。

如果 FPGA 的地址空间是通过 PCI / PCIe 呈现的,那么您可能很幸运地使用它lspci来定位其内存区域、打开/dev/mem并使用mmap()它......尽管这伴随着所有相关的安全问题和警告......即:不要在真实产品中或实验室/家庭外这样做。

但更理想的情况是,您应该编写适当的驱动器来公开您在 FPGA 中提供的任何功能。


根据您的后续评论,您能够lseek()调用该设备,这对于字符设备来说并不常见。

file_operations结构概述了什么“特征“可从设备或节点获取。

这是因为地址空间是通过 Xilinx PCIe 驱动程序呈现的吗?

查看主线内核,我无法立即看到驱动程序,但如果 FPGA 的接口确实是 PCIe,并且没有使用某种奇怪的窗口机制,那么我会想象有一些可用的内存标志区域,因此有一种在其中查找的方法。

相关内容