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