Как и в предыдущем ответе, фиксированная скорость увеличения jiffies
.
Стандартный способ задания времени для функции, которая принимает jiffies
, использует константу HZ
.
Это аббревиатура для Герц, или число тиков в секунду. В системе с таймером таймера, установленным на 1 мс, 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 мс). Если вы попытались использовать HZ/200
в системе тиков 10 мсек, целочисленное деление даст вам 0 jiffies!
Так что эмпирическое правило: будьте очень осторожны, используя HZ для крошечных значений (те, которые приближаются к 1 jiffie).
Чтобы конвертировать другим способом, вы должны использовать:
jiffies / HZ /* jiffies to seconds */
jiffies * 1000 / HZ /* jiffies to milliseconds */
Вы не должны ожидать ничего лучше, чем точность в миллисекундах.