【发布时间】:2018-04-06 06:45:01
【问题描述】:
queue_delayed_work(struct workqueue_struct *wq,struct delayed_work *dwork,unsigned long delay)
在上面的函数中,是否可以给出小于一瞬间的延迟?
【问题讨论】:
标签: linux linux-kernel kernel linux-device-driver device-driver
queue_delayed_work(struct workqueue_struct *wq,struct delayed_work *dwork,unsigned long delay)
在上面的函数中,是否可以给出小于一瞬间的延迟?
【问题讨论】:
标签: linux linux-kernel kernel linux-device-driver device-driver
您可以延迟零个或多个 jiffies。为了获得延迟,内核在内部使用了一个计时器。最早可以到期的计时器是在最近的下一个刻度上。因此可能的最小延迟为 1 jiffies。在零 jiffies 的情况下,延迟的工作(dwork)将立即开始,没有任何延迟。
queue_delayed_work 内部调用__queue_delayed_work,在其中完成了配置定时器的实现。最短过期时间是 jiffies + delay。参考链接了解更多信息。
要安排您的工作少于 jiffiy 计时器,您可以使用hrtimers(高分辨率计时器)。
有关实现 hrtimer 的更多信息,请阅读以下链接:
【讨论】:
在 queue_delayed_work 的情况下,唯一小于 1 jiffy 的延迟是 0 jiffies。
delay 的类型为 unsigned long,它被指定为“排队前等待的 jiffies 数”。
【讨论】:
当我们调用 wait_event_interruptible ( wq, 条件)使用wait_event_interruptible时是否必须调用wake_up函数?
【讨论】: