如何在 Linux 中加快向 /dev/input/eventX 发送事件的速度?

如何在 Linux 中加快向 /dev/input/eventX 发送事件的速度?

我正在使用 kernel-5.10.24 的嵌入式 Linux 系统上工作,我想通过写入/dev/input/eventX.
通过我的测试sendevent发送事件.c),事件注入不如真实硬件注入那么快。我认为这可能是因为将每个事件从用户空间
写入内核的开销。 所以我想知道是否有一种快速的方法让用户空间尽快发送事件?/dev/intput/eventX

谢谢,

答案1

缓慢来自于以下因素。

  1. fork 进程来运行 sendevent 命令;
  2. 打开/dev/input/eventXsendevent_main()
  3. 将事件数据写入上述文件中sendevent_main()
  4. 关闭文件 - in sendevent_main().

我通过更改sendevent_main()如下更快地得到了它。

  1. 打开/dev/input/eventX;
  2. 打开包含事件列表的文件;
  3. 创建一个循环并执行以下操作
    3.1 从上面的文件中一一读取事件
    3.2 将事件一一写入到 `/dev/input/eventX'
  4. 关闭文件。

因此,在上述更改中,事件读取和写入是在循环中完成的,而open无需close像以前那样对每个事件进行开销。

通过此更改,将事件发送到 的速度要快得多/dev/input/eventX
但它带来了另一个问题,某些事件的行为并不像预期的那样正确。发送事件的速度是否太快以至于应用程序无法处理?

我仍在检查和更改代码,例如usleep(10000)在事件发送之间添加。但又回到了原来的缓慢。

挣扎……

相关内容