使用 ioctl 与读取时的 PCIe 总线延迟?

PCIe bus latency when using ioctl vs read?

我有一个硬件客户端1谁的数据采集卡我已经写了一个Linux PCI 内核驱动程序

卡一次只能通信 1-4 个字节,具体取决于用户指定如何使用它,鉴于此,如果他们只想与卡进行简单的 1 字节通信,我使用 ioctl for some of the functionality, but also make use of the file_operations structure to treat the card as a basic character device to give the user of the card the ability to just use read or write

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

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

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

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

1:他们只有另外两个开发人员,他们都没有使用过Linux

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