c - 使用 ioctl 与读取时的 PCIe 总线延迟?
问题描述
我有一个硬件客户端1,它是我为其编写了 Linux PCI 内核驱动程序的数据采集卡系列。
卡一次只能通信 1-4 个字节,具体取决于用户指定使用它的方式,鉴于此,我利用ioctl
一些功能,但也利用file_operations
结构将卡视为基本字符设备让卡的用户能够使用read
,或者write
如果他们只想与卡进行简单的 1 字节通信。
在与客户讨论驱动程序后,他们的一位开发人员了解到,将卡视为字符设备使用将在 PCI总线open/read/write
上引入延迟,而不是使用.open/ioctl
鉴于驱动程序没有区分它是如何打开的,并且ioctl
和read/write
函数调用相同的代码,这个问题是否有效?
如果是这样,我将如何从我的驱动程序代码中测试总线延迟?我可以调用内核函数来测试它吗?
最后,我对总线的测试是否仅对我的特定设置(内核设置、平台、内存时序、CPU 等)有效?
1:他们只有 2 个其他开发人员,他们都没有使用过 Linux
解决方案
我怀疑客户的开发人员有点困惑。他认为使用read
或write
对比之间的区别ioctl
对应于在总线上执行的操作类型。如果您向他解释这只是软件 API 的差异,并且任一选项在总线上执行完全相同的操作,那应该会让他们满意。
推荐阅读
- mapbox - 下载 MapBox 离线地图并将其存储在内部存储中
- linq - 我在使 Powershell Linq“加入”工作时遇到问题 [显式参数输入?]
- flutter - 在 Flutter Widget 测试中,如何将 media.orientation 设置为纵向?
- html - HTML - 通过显示无隐藏和取消隐藏 div
- php - 删除字符串中的两个第一个单词和第一个单词(标题wordpress)
- android - 没有为生产构建生成 FCM 令牌
- c# - Active Directory:调整功能的性能以检索组成员
- visual-studio - 带有一列的 MVC 列表以显示图像
- r - 使用 Mutate 对特定列进行排名
- javascript - 如何获取具有溢出文本的 div 内的可见字符数(直到其宽度)