[问题] 可重入程式码

楼主: 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