如何在Linux中手动将抖动转换为毫秒,反之亦然?我知道内核2.6具有此功能,但是我正在研究2.4(家庭作业),尽管我看了一下代码,但它使用了许多宏常量,我不知道它们是否在2.4中定义。
如先前的回答所述,jiffies增量的速率是固定的。
jiffies
为接受的函数指定时间的标准方法jiffies是使用常数HZ。
HZ
那是Hertz的缩写,或每秒的刻度数。在计时器滴答设置为1ms的系统上,HZ = 1000。一些发行版或体系结构可能使用另一个数字(以前是100)。
指定jiffies函数计数的标准方法是使用HZ,如下所示:
schedule_timeout(HZ / 10); /* Timeout after 1/10 second */
在最简单的情况下,这可以正常工作。
2*HZ /* 2 seconds in jiffies */ HZ /* 1 second in jiffies */ foo * HZ /* foo seconds in jiffies */ HZ/10 /* 100 milliseconds in jiffies */ HZ/100 /* 10 milliseconds in jiffies */ bar*HZ/1000 /* bar milliseconds in jiffies */
最后两个有一个问题,但是,在具有10 ms计时器滴答的系统上,该HZ/100值为1,并且精度开始受到影响。您可能会在0.0001到1.999之间的任何时间间隔内获得延迟(本质上是0-2毫秒)。如果您尝试HZ/200在10ms的滴答系统上使用,则整数除法会给您0个捷夫!
HZ/100
HZ/200
因此,经验法则是,请小心使用HZ来获取微小值(接近1个吉菲)。
要进行另一种转换,可以使用:
jiffies / HZ /* jiffies to seconds */ jiffies * 1000 / HZ /* jiffies to milliseconds */
您不应该期望比毫秒精度更好的东西。