首页 > 解决方案 > 使用 ioctl 与读取时的 PCIe 总线延迟?

问题描述

我有一个硬件客户端1,它是我为其编写了 Linux PCI 内核驱动程序的数据采集卡系列。

卡一次只能通信 1-4 个字节,具体取决于用户指定使用它的方式,鉴于此,我利用ioctl一些功能,但也利用file_operations结构将卡视为基本字符设备让卡的用户能够使用read,或者write如果他们只想与卡进行简单的 1 字节通信。

在与客户讨论驱动程序后,他们的一位开发人员了解到,将卡视为字符设备使用将在 PCI总线open/read/write上引入延迟,而不是使用.open/ioctl

鉴于驱动程序没有区分它是如何打开的,并且ioctlread/write函数调用相同的代码,这个问题是否有效?

如果是这样,我将如何从我的驱动程序代码中测试总线延迟?我可以调用内核函数来测试它吗?

最后,我对总线的测试是否仅对我的特定设置(内核设置、平台、内存时序、CPU 等)有效?

1:他们只有 2 个其他开发人员,他们都没有使用过 Linux

标签: clinux-kerneldriverbus

解决方案


我怀疑客户的开发人员有点困惑。他认为使用readwrite对比之间的区别ioctl对应于在总线上执行的操作类型。如果您向他解释这只是软件 API 的差异,并且任一选项在总线上执行完全相同的操作,那应该会让他们满意。


推荐阅读