场景:假设如果我在做echo 1 > sysfs_entry
- 它会开始做一些 I/O 操作,直到我做echo 0 > sysfs_entry
。在这里,我想实现计时器,sysfs_entry
以便它应该在 t 秒后停止 I/O 操作,即使我没有给出echo 0 > sysfs_entry
.
PS:我不想使用忙等待的方法。
首选:延期/延迟工作
请有人帮我解决这种情况。
场景:假设如果我在做echo 1 > sysfs_entry
- 它会开始做一些 I/O 操作,直到我做echo 0 > sysfs_entry
。在这里,我想实现计时器,sysfs_entry
以便它应该在 t 秒后停止 I/O 操作,即使我没有给出echo 0 > sysfs_entry
.
PS:我不想使用忙等待的方法。
首选:延期/延迟工作
请有人帮我解决这种情况。
您可以为此使用add_timer()
和del_timer()
API。事件队列也可能起作用(取决于上下文)。有关更多详细信息,请阅读此处免费提供的 Linux 设备驱动程序(又名 LDD)一书的第 7 章 «时间、延迟和延迟工作» 。Timer API 在第 198 页上进行了描述。
在设备驱动程序的写入回调中使用 add_timer() 添加一个计时器,并确保在读取回调中使用 del_timer() 或 del_timer_sync()。