我正在使用msecs_to_jiffies(msecs)来获得延迟。我需要16毫秒的延迟。但问题是输入1-10的函数返回1,11-20的2,3-30和21的函数。因此我无法设置适当的延迟。我只能在10 ms的时间内设置延迟。我不能改变HZ值和功能也不能睡觉。
请建议解决此问题。 感谢
答案 0 :(得分:4)
您的系统HZ值似乎设置为100。
如果您希望以低于系统HZ的分辨率暂停执行一段时间,则需要使用电路板支持并在内核中启用的高分辨率计时器(使用nsec分辨率,而不是jiffies)。请参阅此处了解如何使用它们的界面:http://lwn.net/Articles/167897/
因此,要么将系统HZ更改为1000并获得1毫秒的jiffie分辨率,要么使用高分辨率计时器。
答案 1 :(得分:3)
你无法完全睡眠16毫秒。您可以至少 16毫秒而不是16毫秒。这不是Linux(或任何其他桌面操作系统)的工作方式 - 它们不是实时操作系统,而是以非确定性的方式安排,而且你无能为力。
无论你想做什么,你都必须采取另一种方式。你提供的信息很少,我只能说你想做的事情是无法完成的。