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

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

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

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

最佳答案

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

queue_delayed_work内部调用 __queue_delayed_work配置计时器的实现完成的地方。最小过期时间是 jiffies + delay。有关详细信息,请参阅链接。

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

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

hrtimer repeating task in the Linux kernel

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

关于linux - 如何在延迟工作队列中给出小于 jiffies 的延迟值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46927979/

相关文章:

linux - 如何记住 `ln` 命令的参数顺序?

linux - kmalloc函数及保护(READ,WRITE,EXEC)

c - Linux内核模块复制进程的.text段

c - timeout = 0 的 recvmmsg() 等同于非阻塞 recvmsg()?

linux - 如何从另一个进程/内核线程抢占一个进程?

linux - 在 linux 中读取属性文件

linux bash 'sort' 按字典顺序

linux - 构建时找不到 ldl lnsl lpthread lrt?

c# - 在并行端口上使用 SetCommTimeouts 失败

linux内核开发