gpt4 book ai didi

从用户空间调用驱动程序 API 的成本

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:38:16 24 4
gpt4 key购买 nike

这一切都在 Linux 和 C 中。

我有一个用户空间库函数,最多需要调用设备驱动程序的读/写函数 8 次。 (我正在编写库和设备驱动程序。)我看到实现此目的的两种方法:

  1. 让库调用读/写所需的次数。
  2. 让驱动程序按需要的次数处理设备的读/写操作。

驱动程序已经根据之前无论如何都会发生的 ioctl 调用知道所需的次数。选项 1 需要在用户空间和内核空间之间进行更多切换,我知道这会降低性能。另一方面,选项 2 会产生问题。对于 read 调用,传递回用户空间的缓冲区最多会大 8 倍,除非可以一次将 1 个读取传递回用户空间而无需在两种模式之间切换。除非每次写入相同的数据,否则写调用也会有同样的问题。因此,选项 2 的最坏情况需要比选项 1 大 8 倍的缓冲区来回传递。

最终,哪个更有效率?

最佳答案

正如评论员所建议的那样,如果您关心效率,则没有任何推测可以替代基准测试和分析。 “效率”会受到大量因素的影响,分析您的每个选项是确定最佳选项的正确方法。

关于从用户空间调用驱动程序 API 的成本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12485686/

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