推 askacis:disable_irq()裡面有一個用來紀錄的flag,呼叫的時候會++ 05/05 18:25
→ askacis:enable_irq()會檢查是否為0,若否則--;如果為0會印 05/05 18:34
→ askacis:enable_irq(xx) unbalance的訊息,不曉得你有發生嗎? 05/05 18:35
→ eleghost:沒有印出unbalance ....的訊息. 05/05 18:36
→ eleghost:請問您是在那個平台發生的呢? 05/05 18:37
→ askacis:你可以去看一下你那個版本kernel對於enable_irq的實做 05/05 18:40
→ askacis:有些版本會限定那個flag值一定要為1才會開中斷,若大於1 05/05 18:41
→ askacis:會繼續--;換言之如果你呼叫disable_irq兩次,這時的flag=2 05/05 18:42
→ eleghost:請問enable_irq只會跟哪版kernel有關吧? 05/05 18:42
→ eleghost:跟用哪個cpu solution會有關嗎? 05/05 18:43
→ askacis:卻只呼叫一次enable_irq,自然中斷就不會開了~ 05/05 18:46
→ eleghost:我現在只在trace LXR的kernel, 3.0.8版 05/05 18:47
推 askacis:那你找找enable_irq()這個function是怎麼寫的就知道了 05/05 18:48
→ askacis:我直覺是flag值這個問題啦~你可以參考看看 05/05 18:49
→ eleghost:ok, 我會check. 05/05 18:50
推 askacis:我用kernel 2.6.21 for ARM,你可以看一下irq.c 05/05 19:32
→ askacis:打錯XD...應該是 kernel_source/kernel/irq/manage.c 05/05 19:34
→ askacis:整理一下用回文的好了,推文看起來真亂XD 05/05 19:43