gpt4 book ai didi

c - 在内核空间和用户空间工作

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:53:17 25 4
gpt4 key购买 nike

在我的项目中,我必须不断地从固件 FIFO 中读取一堆数据。我一次读取1个单词,读取115个单词后,全部解析成一个结构体。我可以通过两种方式执行此操作:

1.) 实现驱动程序,使其一次返回 1 个单词,并在用户空间中进行所有打包

2.) 通过 IOCTL 将结构传递给驱动程序,驱动程序执行 115 次读取,然后传回填充的结构。

第 2 项对我很有吸引力,因为它使用户空间代码更清晰,但我不确定是否在驱动程序中完成所有这些工作。从标准实践的角度和性能的角度来看,这些方法中哪一种更好?

最佳答案

我认为这取决于驱动程序是否特定于硬件。如果驱动程序需要了解设备的协议(protocol)(它是特定于设备的驱动程序而不是某些通用驱动程序),那么 #2 可能是您最好的选择,因为它最大限度地减少了用户空间程序和内核之间的流量。如果驱动程序应该合理地与硬件无关,那么 #1 就是您应该实现的(例如,如果它是通信协议(protocol)的驱动程序,如 SPI/I2C,而不是设备的驱动程序)。

对于性能,#2 几乎肯定更好,因为它需要 1 个系统调用而不是 115 个系统调用。

关于c - 在内核空间和用户空间工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25774888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com