如前面的答案所说,jiffies增量的速率是固定的。
为接受jiffies的函数指定时间的标准方法是使用常量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毫秒定时器滴答的系统上,HZ / 100为1,精度开始受损。您可能会在0.0001和1.999之间的任何时间延迟计时器滴答(基本上为0-2 ms)。如果你试图在10ms tick系统上使用HZ / 200,整数除法给你0 jiffies!
所以经验法则是,非常小心地使用HZ的微小的值(那些接近1吉菲)。
要转换另一种方式,您将使用:
jiffies / HZ /* jiffies to seconds */
jiffies * 1000 / HZ /* jiffies to milliseconds */
你不应该期望什么比毫秒精度更好。