我想實現非繁忙的等待機制,在linux內核模塊中創建納秒級的延遲。是不是很忙?
現在我是看着它被提及ndelay函數是忙等待機制的作用
ndelay(ns);
但https://www.kernel.org/doc/Documentation/timers/timers-howto.txt
這裏。
但我想要非忙等待延遲。所以,我想在Linux內核模塊約nop
這樣的:
asm volatile ("nop");
我已經研究了NOP需要一個週期來執行。所以,我將實現嵌套nop來獲得所需的延遲。我的問題是 -
通過使用nop將我在一個非繁忙的等待方式實現納秒延遲?任何人都可以請確認嗎?另外對某些期刊和資源的參考也會有所幫助。
這是一個循環「無所事事」指令。如果你的CPU發生了一個納秒級的週期時間,那麼是的,nop會是「幾納秒的延遲」。但請注意,基於CPU時鐘速度的延遲會有所不同。一個1ghz的CPU會有1納秒的延遲,而100MHz的CPU會有10納秒。 –
感謝您的評論。但這會造成一個非繁忙的等待延遲? –
我不確定'非忙'對你意味着什麼。根據我的經驗,您要麼忙於等待(重複檢查條件),要麼調用內核函數,以防止線程調度程序在線程滿足條件(如信號量)之前分配時間。根據定義,任何執行的指令都會使CPU保持繁忙。也就是說,你看過「暫停」指令嗎? –