0

我正在使用 msecs_to_jiffies(msecs) 来获得延迟。我需要 16 毫秒的延迟。但问题是函数返回 1 用于输入 1-10,2 用于 11-20,3 用于 21-30 等等。因此我无法设置适当的延迟。我只能将延迟设置为 10 毫秒。我无法更改 HZ 值,并且该功能也无法睡眠。

请提出解决此问题的方法。谢谢

4

2 回答 2

4

您的系统 HZ 值似乎设置为 100。

如果您希望以低于系统 HZ 的分辨率暂停执行一段时间,您需要使用主板支持并在内核中启用的高分辨率计时器(使用 nsec 分辨率,而不是 jiffies)。有关如何使用它们的界面,请参见此处:http: //lwn.net/Articles/167897/

因此,要么将系统 HZ 更改为 1000 并获得 1 毫秒的 jiffie 分辨率,要么使用高分辨率计时器。

于 2012-05-09T05:32:53.477 回答
4

不能睡整整 16 毫秒。您可以睡至少16 毫秒,但不能睡 16 毫秒。这不是 Linux(或任何其他桌面操作系统)的工作方式——它们不是实时操作系统,它们是以非确定性的方式安排的,你对此无能为力。

无论你想做什么,你都必须以另一种方式去做。根据您提供的少量信息,我只能说您尝试做的事情无法完成。

于 2012-05-09T05:22:48.580 回答