作者rtes (unbutu)
看板LinuxDev
标题[问题] 可重入程式码
时间Mon Apr 8 16:37:03 2013
小弟有个问题想请教
就是目前我在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
1F:推 RouterHsieh:看你的程式是不是跑在interrupt context里头, 04/08 17:11
2F:→ RouterHsieh:如果是的话就得用spin_lock/spin_unlock 04/08 17:11
3F:推 heoris:atomic_context or interrupt context 只能用spinlock 04/08 18:32