[問題] 可重入程式碼

看板LinuxDev作者 (unbutu)時間12年前 (2013/04/08 16:37), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串1/1
小弟有個問題想請教 就是目前我在Linux實做一個kernel module 裡面主要提供許多API讓多個使用者應用程式呼叫使用 假如有一個API C給上層應用程式TASK A,B去呼叫。此C函數具有共享變數 那如果TASK A呼叫C執行到一半被外部硬體中斷,最後假設作業系統排程讓 TASK B去執行。TASK B又呼叫C。我認為此時產生重進入的現象。又因為函數C 具有共享變數。所以我在想這時候是不是需要鎖或是信號來保護這共享資源 於是考慮mutex 或semaphore。但我不太清楚我的問題應該是要採用哪方法 或是spinlock之類的方法(目前在看) 不好意思 問題有點長 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.227.242.179

04/08 17:11, , 1F
看你的程式是不是跑在interrupt context裡頭,
04/08 17:11, 1F

04/08 17:11, , 2F
如果是的話就得用spin_lock/spin_unlock
04/08 17:11, 2F

04/08 18:32, , 3F
atomic_context or interrupt context 只能用spinlock
04/08 18:32, 3F
文章代碼(AID): #1HOe6oVi (LinuxDev)
文章代碼(AID): #1HOe6oVi (LinuxDev)