1

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

高时间:0.01ms-20.00ms;低时:10ms-1000ms

两者都可以通过用户空间进行调整。对于 lowtime,我使用 API 计时器,对于 hightime,我使用 mdelay() 和 udelay()。

现在的问题是:如果 hightime 是 9.9ms 而 lowtime 是 10ms,那么内核会一直处于休眠状态(预计 0.1ms)。但是我在用户空间中的用户界面需要工作,而内核计时器正在运行。在我的系统中,一个 jiffie 大约是 10 毫秒,所以我不能在低时间使用计时器。

有人知道了,我怎么能在内核中做这些 0.01 毫秒 - 10 毫秒的等待,这样我的用户界面仍然可以正常工作?

谢谢

4

1 回答 1

1

您可以减少 10 毫秒:

编辑/usr/include/asm/param.h并查找 HZ 的定义。我猜你会发现 100。100 Hz 表示 10 ms 的周期。更现代的 Linux 具有 250 HZ,这将使您的时间片减少到 4 毫秒。您可以将其压缩到 1000 HZ,这可以让您以 1 ms 切片运行。

进一步阅读:Linux 内核映射,7.1。测量时间流逝

于 2013-03-22T16:15:17.523 回答