是否需要在tasklet中使用spin_lock?

时间:2014-04-29 14:41:55

标签: linux-device-driver kernel-module spinlock isr

据我所知,在中断处理程序中,不需要同步技术。中断处理程序无法并发运行。简而言之,ISR中的抢占被禁用。但是,我对tasklet有疑问。据我所知,tasklet在中断上下文中运行。因此,在我看来,在tasklet函数例程下不需要自旋锁。但是,我不确定。有人可以解释一下吗?谢谢你的回复。

2 个答案:

答案 0 :(得分:1)

如果数据在上半部分和下半部分之间共享,则转为锁定。简单的锁定规则。锁意味着保护数据而不是代码。

1. What to protect?. 
2. Why to protect? 
3. How to protect.

答案 1 :(得分:0)

同一类型的两个tasklet不会同时运行。因此,不需要保护仅在单一类型的tasklet中使用的数据。但是,如果数据在两个不同的tasklet之间共享,则必须在访问下半部分中的数据之前获得正常的自旋锁。您不需要禁用下半部分,因为tasklet永远不会在同一处理器上抢占另一个正在运行的tasklet。