我正在寫一個設備的內核驅動程序,它會定期生成定期讀取數據的設備。用戶空間程序非常適合將其作爲阻塞驅動程序。如何在linux驅動模塊中暫停100+毫秒?
什麼方法都可以在驅動程序從4毫秒至100毫秒的任何地方暫停(即做「塊」)?在用戶空間我該怎麼做才能某種類似:
tv.tv_sec = microsecond_delay/1000000ul;
tv.tv_usec = microsecond_delay % 1000000ul;
(void)select(0, NULL, NULL, NULL, & tv);
或
gettimeofday(tv,NULL);
和比較結構。
[編輯 - 我自己的答案]
我將使用下面的代碼在我的司機:
#include <linux/jiffies.h>
...
schedule_timeout(file->private_data->my_driver_struct.read_pause_jiffies);
瞧!我現在要測試...
答案是受歡迎的,但我只是發現了[這](http://makelinux.com/ldd3/chp-7-sect-4) – Jamie
其實,不是我在尋找:我想睡眠指定的時間,而不是創建一個異步計時器事件。 – Jamie
發現它:'extern簽署長schedule_timeout(簽名長超時);' – Jamie