当前位置: 技术问答>linux和unix
自旋锁使用
来源: 互联网 发布时间:2017-02-25
本文导语: 在中断中加自旋锁的问题。 我有几个问题不明白,还请知道的解答。 1.一个函数A中使用了自旋锁,那么另一个函数B也使用了自旋锁,而且B在锁定区域调用了A函数,这种情况可以存在吗?如果存在是如何处理的? 2....
在中断中加自旋锁的问题。
我有几个问题不明白,还请知道的解答。
1.一个函数A中使用了自旋锁,那么另一个函数B也使用了自旋锁,而且B在锁定区域调用了A函数,这种情况可以存在吗?如果存在是如何处理的?
2.在中断函数中加自旋锁要注意什么情况?我在中断函数中加自旋锁,老是死机(死锁?),请大牛给些中断加锁时要注意的事项,小弟不胜感激……
我有几个问题不明白,还请知道的解答。
1.一个函数A中使用了自旋锁,那么另一个函数B也使用了自旋锁,而且B在锁定区域调用了A函数,这种情况可以存在吗?如果存在是如何处理的?
2.在中断函数中加自旋锁要注意什么情况?我在中断函数中加自旋锁,老是死机(死锁?),请大牛给些中断加锁时要注意的事项,小弟不胜感激……
|
1、自旋锁不能嵌套
2、
单核下,无论是否允许抢占,中断里都不能用自旋锁。
smp可抢占内核,
进程上下文使用 spin_lock_irqsave spin_unlock_irqrestore
中断上下文使用 spin_lock spin_unlock
此外,防止死锁的简单方法是按照一致的顺序申请资源
2、
单核下,无论是否允许抢占,中断里都不能用自旋锁。
smp可抢占内核,
进程上下文使用 spin_lock_irqsave spin_unlock_irqrestore
中断上下文使用 spin_lock spin_unlock
此外,防止死锁的简单方法是按照一致的顺序申请资源