【问题标题】:How to place microsecond delay in kernel?如何在内核中放置微秒延迟?
【发布时间】:2015-08-21 21:31:00
【问题描述】:

我想在Linux kernel 中设置微秒延迟。有哪些功能支持,需要添加什么头文件?

【问题讨论】:

  • 这取决于上下文,在任何情况下,所提到的文档都是您必须阅读的。

标签: c tcp linux-kernel


【解决方案1】:

你最好阅读linux内核源码中的Documentation/timers/timers-howto.txt

简而言之,您可以使用msleep(unsigned long msecs),其标头为linux/delay.h

【讨论】:

  • 我试过 msleep() 它正在工作,但我想延迟微秒。 usleep() 不工作
  • 改用usleep_range(unsigned long min, unsigned long max)
【解决方案2】:

短睡眠是通过忙循环来完成的。他们应该气馁。 使用 udelay() 但不超过 1000 微秒。

#include <linux/delay.h>
void udelay(unsigned long usecs); 

【讨论】:

  • udelay() 给出错误。 “未定义的符号:__const_udelay”。我能理解的是msleep 仅使用udelayudelay 调用终极__udelay。但是如果我想将udelay 放在linux 内核的net 目录中,应该包含什么合适的头文件?
  • @RatDon msleep 确实停止了内核线程,而 usleep 执行了一个繁忙的循环。它们没有连接。对不起,我不知道你为什么有一个未定义的。这取决于您的架构。对于 x86,它是从 arch/x86/lib/delay.c 导出的。正如 Arthur 在另一个答案中所说,您可以使用usleep_range,它使用高分辨率计时器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多