场景:假设我正在做echo 1 > sysfs_entry
- 它将开始执行一些I / O操作,直到echo 0 > sysfs_entry
为止。
在这里,我想在sysfs_entry
中实现计时器,这样它应该在t秒后停止I / O操作,即使我没有给echo 0 > sysfs_entry
。
PS:我不想使用忙等待方法。
首选:延迟/延迟工作
请有人帮我解决这个问题。
答案 0 :(得分:3)
您可以使用add_timer()
和del_timer()
API。事件队列也可能有效(取决于上下文)。有关更多详细信息,请阅读免费提供的Linux设备驱动程序(又名LDD)第7章“时间,延迟和延期工作”right here。第198页介绍了Timer API。
答案 1 :(得分:0)
在设备驱动程序的write回调中添加带有add_timer()的计时器,并确保在read回调中使用del_timer()或del_timer_sync()。