[問題] enable_irq / disable balance.

看板LinuxDev作者 (eleghost)時間13年前 (2012/05/05 17:08), 編輯推噓3(3015)
留言18則, 2人參與, 最新討論串1/2 (看更多)
在 arm 平台環境. 請問 enable_irq / disable_irq是否一定要平衡? 意思是說如果disable_irq一次, 可用enable_irq 重新喚起irq. 但如果今日調用disable_irq兩次, 但只enable_irq一次 則無法喚起. 一定要在調用一次enable_irq才能使 irq工作. 這是kernel設定嗎? 可以改變嗎? thanks. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.47.118.40

05/05 18:25, , 1F
disable_irq()裡面有一個用來紀錄的flag,呼叫的時候會++
05/05 18:25, 1F

05/05 18:34, , 2F
enable_irq()會檢查是否為0,若否則--;如果為0會印
05/05 18:34, 2F

05/05 18:35, , 3F
enable_irq(xx) unbalance的訊息,不曉得你有發生嗎?
05/05 18:35, 3F

05/05 18:36, , 4F
沒有印出unbalance ....的訊息.
05/05 18:36, 4F

05/05 18:37, , 5F
請問您是在那個平台發生的呢?
05/05 18:37, 5F

05/05 18:40, , 6F
你可以去看一下你那個版本kernel對於enable_irq的實做
05/05 18:40, 6F

05/05 18:41, , 7F
有些版本會限定那個flag值一定要為1才會開中斷,若大於1
05/05 18:41, 7F

05/05 18:42, , 8F
會繼續--;換言之如果你呼叫disable_irq兩次,這時的flag=2
05/05 18:42, 8F

05/05 18:42, , 9F
請問enable_irq只會跟哪版kernel有關吧?
05/05 18:42, 9F

05/05 18:43, , 10F
跟用哪個cpu solution會有關嗎?
05/05 18:43, 10F

05/05 18:46, , 11F
卻只呼叫一次enable_irq,自然中斷就不會開了~
05/05 18:46, 11F

05/05 18:47, , 12F
我現在只在trace LXR的kernel, 3.0.8版
05/05 18:47, 12F

05/05 18:48, , 13F
那你找找enable_irq()這個function是怎麼寫的就知道了
05/05 18:48, 13F

05/05 18:49, , 14F
我直覺是flag值這個問題啦~你可以參考看看
05/05 18:49, 14F

05/05 18:50, , 15F
ok, 我會check.
05/05 18:50, 15F

05/05 19:32, , 16F
我用kernel 2.6.21 for ARM,你可以看一下irq.c
05/05 19:32, 16F

05/05 19:34, , 17F
打錯XD...應該是 kernel_source/kernel/irq/manage.c
05/05 19:34, 17F

05/05 19:43, , 18F
整理一下用回文的好了,推文看起來真亂XD
05/05 19:43, 18F
文章代碼(AID): #1FfEuJOH (LinuxDev)
文章代碼(AID): #1FfEuJOH (LinuxDev)