如何在延迟工作队列中给出小于jiffies的延迟值

时间:2017-10-25 08:51:13

标签: linux linux-kernel kernel linux-device-driver device-driver

queue_delayed_work(struct workqueue_struct *wq,struct delayed_work *dwork,unsigned long delay)

在上面的函数中,是否可以给出小于1的延迟?

3 个答案:

答案 0 :(得分:1)

你可以延迟零或更多的jiffies。为了获得延迟,内核内部使用了一个计时器。最早的计时器可以到期是最近的下一个刻度。因此,可能的最小延迟是1 jiffies。如果零利润,延迟工作(dwork)将立即开始,没有任何延迟。

queue_delayed_work在内部调用__queue_delayed_work,其中配置计时器的实现已完成。最短到期时间是jiffies +延迟。有关详细信息,请参阅链接。

要安排工作时间少于jiffiy计时器,您可以使用hrtimers(高分辨率计时器)。

有关实施hrtimer的更多信息,请阅读以下链接:

hrtimer repeating task in the Linux kernel

https://www.ibm.com/developerworks/library/l-timers-list/

答案 1 :(得分:0)

queue_delayed_work的情况下,唯一的延迟小于1 jiffy是0 jiffies。

delay的类型为unsigned long,并且指定为“排队前要等待的jiffies数量”。

答案 2 :(得分:0)

当我们调用wait_event_interruptible时(wq,     condition)当我们使用wait_event_interruptible时,是否必须调用wake_up函数?