2013-03-22 77 views
1

我需要在linux內核中使用timer,mdelay()函數設置信號的高低。Linux核心延遲,低於jiffies,沒有忙等待

hightime:0.01ms-20.00ms; lowtime:10ms-1000ms

兩者都可以通過用戶空間進行調整。 對於lowtime我使用API​​計時器和高峯期我使用mdelay()和udelay()。

現在的問題是:如果hightime是9.9ms,lowtime是10ms,那麼整個內核都會睡着(期望0.1ms)。但是當內核定時器正在運行時,用戶空間中的用戶界面需要工作。 在我的系統中,一個jiffie大約是10ms,所以我不能在lowtime使用定時器。

有人有一個想法,我怎麼能做到這些0.01ms - 10毫秒在內核中等待,以便我的用戶界面仍然正常工作?

感謝

+0

我想你應該指定一個平臺。我沒有理由期望內核應該能夠滿足這樣的要求,而無需使用某種形式的專用計時器硬件。 – unwind 2013-03-22 16:13:40

回答

1

可以減少10毫秒:

編輯/usr/include/asm/param.h,尋找HZ的定義。我想你會發現100. 100赫茲呈現10毫秒的時間段。更現代的Linux有250 HZ,這將把你的時間 切片降低到4毫秒。您可以將其平方化爲1000 HZ,讓您以1 ms的時間片運行。

延伸閱讀:Linux kernel map, 7.1. Measuring Time Lapses