[問題] 可重入程式碼

作者: rtes (unbutu)   2013-04-08 16:37:03
小弟有個問題想請教
就是目前我在Linux實做一個kernel module
裡面主要提供許多API讓多個使用者應用程式呼叫使用
假如有一個API C給上層應用程式TASK A,B去呼叫。此C函數具有共享變數
那如果TASK A呼叫C執行到一半被外部硬體中斷,最後假設作業系統排程讓
TASK B去執行。TASK B又呼叫C。我認為此時產生重進入的現象。又因為函數C
具有共享變數。所以我在想這時候是不是需要鎖或是信號來保護這共享資源
於是考慮mutex 或semaphore。但我不太清楚我的問題應該是要採用哪方法
或是spinlock之類的方法(目前在看)
不好意思 問題有點長 謝謝
作者: RouterHsieh (醉臥美人膝,醒掌天下權)   2013-04-08 17:11:00
看你的程式是不是跑在interrupt context裡頭,如果是的話就得用spin_lock/spin_unlock
作者: heoris (heoris)   2013-04-08 18:32:00
atomic_context or interrupt context 只能用spinlock

Links booklink

Contact Us: admin [ a t ] ucptt.com