看板 LinuxDev 關於我們 聯絡資訊
※ 引述《musicguitar ()》之銘言: : 想請問. : 如果使用一個share的interrupt.也就是除了我自己的裝置會觸發這個中斷 : 其他裝置也會觸發. : (實際上這個是X86裡的IRQ9.ACPI interrupt,我需要知道GPE0 觸發訊號) : 我是否需要做spin lock或是semaphore去做lock的動作. 需要 lock 與否,是取決你要存取的資料是否共享 而不是因為 irq 是不是共用 : 因為我在kernel 2.6.32使用這兩個lock都會出現kernel error(類似kernel bug)的訊息. : 我的ISR所做的事是去動作I2C.讀取device的暫存器. ^^^^^^^^^^^^^^^^^^ 除了你的 ISR 外,有其他的 code flow 會存取這個暫存器嗎? 另外,ISR 中,不適用 semaphore 或是其他需要 process context 的同步機制 spin lock 應該是沒問題的(需不需要是另外一回事) 如果你的 lock 是自己建的,記得初始化 如果是 lock 系統中現有的某個 lock, 那要檢查一下整個 lock 的使用情況, 你有沒有 double lock/unlock error message 可以貼上來 : 另外.我曾在kernel 2.6.29中.semaphore不會出現error.只有spin lock會! : 所以我覺得奇怪.ISR中.到底需不需要再做lock的動作. : 因為我一lock就當機了!!!所以我現在是把lock都拿掉了!! : 不知道會不會出問題... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.104.145.90