Linux内核延迟,低于jiffies,没有忙碌等待

时间:2013-03-22 15:19:39

标签: c linux api timer kernel

我需要在linux内核中使用,定时器和mdelay()按时间设置高低信号。

高频:0.01ms-20.00ms; lowtime:为10ms-1000ms的

两者都可以由用户空间调整。 对于低时我使用API​​计时器,对于高时我使用mdelay()和udelay()。

现在的问题是:如果高时间是9.9ms而低时间是10ms,则内核在整个时间内都处于睡眠状态(预期为0.1ms)。但是我的用户界面中的用户界面需要工作,而内核计时器正在运行。 一个jiffie在我的系统中大约是10ms,所以我不能在低频时使用计时器。

有人知道,我怎么能在内核中执行这些0.01ms - 10 ms的等待,以便我的用户界面仍能正常工作?

由于

1 个答案:

答案 0 :(得分:1)

您可以减少10毫秒:

修改/usr/include/asm/param.h并查找HZ的定义。我想你会找到100。 100 Hz表示10 ms的周期。更现代的Linux拥有250 HZ,可以节省您的时间 切成4毫秒。您可以将其平均为1000 HZ,这样您就可以以1 ms的速度运行。

进一步阅读:Linux kernel map, 7.1. Measuring Time Lapses